diff --git a/2021/src/day01.rs b/2021/src/day01.rs index 1c3acd1..0f32150 100644 --- a/2021/src/day01.rs +++ b/2021/src/day01.rs @@ -2,28 +2,22 @@ use std::io::Read; use crate::common::LineParser; -fn read_input(input: &mut dyn Read) -> Vec { - LineParser::new(input).collect() +fn part_generic(input: &mut dyn Read, window: usize) -> String { + let numbers: Vec = LineParser::new(input).collect(); + + numbers + .windows(window) + .filter(|w| w.last() > w.first()) + .count() + .to_string() } pub fn part1(input: &mut dyn Read) -> String { - let numbers = read_input(input); - - numbers - .windows(2) - .filter(|w| w[1] > w[0]) - .count() - .to_string() + part_generic(input, 2) } pub fn part2(input: &mut dyn Read) -> String { - let numbers = read_input(input); - - numbers - .windows(4) - .filter(|w| w[3] > w[0]) - .count() - .to_string() + part_generic(input, 4) } #[cfg(test)]