AoC_2021/src/day06.rs

33 lines
675 B
Rust

use aoc_runner_derive::{aoc, aoc_generator};
type Data = Vec<u8>;
#[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)
}