AoC_2021/src/day06.rs

32 lines
710 B
Rust

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