You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
691 B
Rust

use crate::util::prelude::*;
static INPUT: &str = include_str!("inputs/day6.txt");
fn find_start(s: &str, win_size: usize) -> usize {
let chars: Vec<_> = s.chars().collect();
chars
.windows(win_size)
.find(|chars| {
let char_counts =
chars.iter().fold(HashMap::default(), |mut counts, char| {
*counts.entry(char).or_insert(0) += 1;
counts
});
if *char_counts.values().max().unwrap() == 1 {
return true;
}
false
})
.map(|s| {
(unsafe { s.as_ptr().offset_from(chars.as_ptr()) } as usize)
+ s.len()
})
.unwrap()
}
pub fn part1() {
println!("{}", find_start(INPUT, 4));
}
pub fn part2() {
println!("{}", find_start(INPUT, 14));
}