From 9148cdbdd1d7dc8471da287f3e2c3d483662a4da Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Tue, 6 Dec 2022 10:16:38 +0100 Subject: [PATCH] 2022 rust day 6 --- 2022/rust/src/solutions/day06.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/2022/rust/src/solutions/day06.rs b/2022/rust/src/solutions/day06.rs index 40bee6e..771fc03 100644 --- a/2022/rust/src/solutions/day06.rs +++ b/2022/rust/src/solutions/day06.rs @@ -12,22 +12,26 @@ pub fn run() -> () { fn solve1(data: &Vec) -> usize { - data.windows(4) + marker_for(&data, 4) +} + +fn solve2(data: &Vec) -> usize { + marker_for(&data, 14) +} + +fn marker_for(data: &Vec, window_len: usize) -> usize { + data.windows(window_len) .enumerate() .filter_map(|(idx, window)| { - let unique = window.iter().copied().collect::>().len() == 4; + let unique = window.iter().copied().collect::>().len() == window_len; match unique { - true => Some(idx + 4), + true => Some(idx + window_len), false => None } }) .next().unwrap() } -fn solve2(data: &Vec) -> i32 { - 2 -} - fn parse_data(data: Vec) -> Vec { data.into_iter() @@ -60,6 +64,6 @@ mod tests { #[test] fn part2() { let data = parse_data(data()); - assert_eq!(2, solve2(&data)); + assert_eq!(19, solve2(&data)); } }