aboutsummaryrefslogtreecommitdiffstats
path: root/AoC2022/06/solver.rs
blob: 0d594793074d2afb1e198b2c9b3484e02e0b22d4 (plain)
pre { line-height: 125%; }
td.linenos .normal { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #2C3B41 }
.highlight { background: #263238; color: #EEFFFF }
.highlight .c { color: #546E7A; font-style: italic } /* Comment */
.highlight .err { color: #FF5370 } /* Error */
.highlight .esc { color: #89DDFF } /* Escape */
.highlight .g { color: #EEFFFF } /* Generic */
.highlight .k { color: #BB80B3 } /* Keyword */
.highlight .l { color: #C3
use std::fs;
use std::io::{self, Read};

fn solver(bytes: &Vec<u8>, marker_len: u32) -> u32 {
    let mut count = marker_len;
    for view in bytes.windows(marker_len as usize) {
        let mut acc: u32 = 0;
        for elt in view {
            acc |= 1 << (elt - 96);
        }
        if u32::count_ones(acc) >= marker_len {
            break;
        }
        count +=
lass="w"> -> io::Result<()> { let mut file = fs::File::open("input").unwrap(); let mut bytes: Vec<u8> = Vec::new(); file.read_to_end(&mut bytes)?; println!("All test passed. {}", solver(&bytes, 4)); println!("All test passed. {}", solver(&bytes, 14)); Ok(()) }