2022 rust day 6

This commit is contained in:
Maciej Jur 2022-12-06 10:16:38 +01:00
parent e55f09878a
commit 9148cdbdd1

View file

@ -12,22 +12,26 @@ pub fn run() -> () {
fn solve1(data: &Vec<char>) -> usize { fn solve1(data: &Vec<char>) -> usize {
data.windows(4) marker_for(&data, 4)
}
fn solve2(data: &Vec<char>) -> usize {
marker_for(&data, 14)
}
fn marker_for(data: &Vec<char>, window_len: usize) -> usize {
data.windows(window_len)
.enumerate() .enumerate()
.filter_map(|(idx, window)| { .filter_map(|(idx, window)| {
let unique = window.iter().copied().collect::<HashSet<char>>().len() == 4; let unique = window.iter().copied().collect::<HashSet<char>>().len() == window_len;
match unique { match unique {
true => Some(idx + 4), true => Some(idx + window_len),
false => None false => None
} }
}) })
.next().unwrap() .next().unwrap()
} }
fn solve2(data: &Vec<char>) -> i32 {
2
}
fn parse_data(data: Vec<String>) -> Vec<char> { fn parse_data(data: Vec<String>) -> Vec<char> {
data.into_iter() data.into_iter()
@ -60,6 +64,6 @@ mod tests {
#[test] #[test]
fn part2() { fn part2() {
let data = parse_data(data()); let data = parse_data(data());
assert_eq!(2, solve2(&data)); assert_eq!(19, solve2(&data));
} }
} }