Skip to main content

parity_vector

Function parity_vector 

Source
pub fn parity_vector(n: u64) -> Option<Vec<CollatzParity>>
Expand description

Returns the parity pattern for the trajectory from n to 1.

The returned vector includes the starting value and every nonterminal value in the trajectory, but it excludes the final 1. For n == 1, this means the parity vector is empty.

Returns None when n == 0 or when a checked odd step overflows.

ยงExamples

use use_collatz::{CollatzParity, parity_vector};

assert_eq!(
    parity_vector(6),
    Some(vec![
        CollatzParity::Even,
        CollatzParity::Odd,
        CollatzParity::Even,
        CollatzParity::Odd,
        CollatzParity::Even,
        CollatzParity::Even,
        CollatzParity::Even,
        CollatzParity::Even,
    ])
);
assert_eq!(parity_vector(1), Some(vec![]));
Examples found in repository?
examples/basic_usage.rs (line 6)
3fn main() {
4    assert_eq!(collatz_sequence(6), Some(vec![6, 3, 10, 5, 16, 8, 4, 2, 1]));
5    assert_eq!(total_stopping_time(6), Some(8));
6    assert_eq!(parity_vector(1), Some(vec![]));
7
8    let summary = verify_range(1, 10);
9
10    assert_eq!(summary.checked, 10);
11    assert_eq!(summary.max_total_stopping_time, Some((9, 19)));
12}