From 473e100c9902351600e7bfe9f323c95946ca1cb0 Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Wed, 1 Dec 2021 18:51:11 +0100 Subject: day1 --- src/bin/day1.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/bin/day1.rs (limited to 'src/bin') diff --git a/src/bin/day1.rs b/src/bin/day1.rs new file mode 100644 index 0000000..eb4ee6a --- /dev/null +++ b/src/bin/day1.rs @@ -0,0 +1,29 @@ +fn main() { + let input = advent::read_numbers(1); + println!("1a: {}", count_increasing(&input)); + println!("1b: {}", count_increasing_window(&input, 3)); +} + +fn count_increasing(numbers: &[usize]) -> usize { + count_increasing_window(numbers, 1) +} + +fn count_increasing_window(numbers: &[usize], window_size: usize) -> usize { + numbers[window_size..].iter() + .zip(numbers.iter()) + .map(|(&x,&y)| (x as isize) - (y as isize)) + .filter(|&x| x.is_positive()) + .count() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test() { + let numbers = [199, 200, 208, 210, 200, 207, 240, 269, 260, 263]; + assert_eq!(count_increasing(&numbers), 7); + assert_eq!(count_increasing_window(&numbers, 3), 5); + } +} -- cgit v1.2.3