use aoc::{
data::{AdventDay, AdventDayStatus},
solver::AocSolver,
testing::{aoc_integration_test, aoc_unit_test},
};
use itertools::Itertools;
pub struct Day1;
impl AocSolver for Day1 {
const ADVENT_DAY: AdventDay = AdventDay::new(1, 2021);
fn solve(input: &str) -> AdventDayStatus {
let input: Vec<u32> = input.lines().map(|line| line.parse().unwrap()).collect();
let part_one = input
.iter()
.tuple_windows()
.filter(|(prev, current)| current > prev)
.count();
let part_two = input
.iter()
.tuple_windows()
.filter(|(prev, _, _, current)| current > prev)
.count();
AdventDayStatus::two_parts(part_one, part_two)
}
}
aoc_unit_test!(Day1,
(example_1,
indoc::indoc!("
199
200
208
210
200
207
240
269
260
263
"),
part_one: 7,
part_two: 5)
);
aoc_integration_test!(Day1);