fn longest_run()

in reverie-util/src/pedigree.rs [19:42]


fn longest_run(sequence: &BitVec) -> (usize, usize) {
    let mut prev_bit = false;
    let mut prev_count = 1;

    let mut max_count = 0;
    let mut max_start = 0;

    for (index, bit) in sequence.iter().enumerate() {
        let count = if index > 0 && prev_bit == *bit {
            prev_count + 1
        } else {
            1
        };
        if count > max_count {
            max_count = count;
            max_start = index + 1 - count;
        }

        prev_count = count;
        prev_bit = *bit;
    }

    (max_start, max_count)
}