use aoc_runner_derive::{aoc, aoc_generator}; type Data = Vec; #[aoc_generator(day06)] pub fn input_generator(input: &str) -> Data { input.trim().split(',').map(|v| v.parse().unwrap()).collect() } fn simulate(input: &Data,n: usize) -> usize { let mut state: [usize;9] = [0;9]; for v in input { state[*v as usize]+=1; } for _ in 0..n { state[7]+=state[0]; state.rotate_left(1); } state.iter().sum() } #[aoc(day06, part1)] pub fn solve_part1(input: &Data) -> usize { simulate(input,80) } #[aoc(day06, part2)] pub fn solve_part2(input: &Data) -> usize { simulate(input,256) }