33 lines
675 B
Rust
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)
|
|
}
|