06.rs
1 #![feature(test)] 2 3 type Input = Vec<i32>; 4 5 fn setup(input: &str) -> Input { 6 input 7 .trim() 8 .split(',') 9 .map(|x| x.parse().unwrap()) 10 .collect() 11 } 12 13 fn solve(input: &Input, n: u32) -> String { 14 let mut counter = vec![0; 9]; 15 for num in input { 16 counter[*num as usize] += 1; 17 } 18 for _ in 0..n { 19 let x = counter.remove(0); 20 counter.push(x); 21 counter[6] += x; 22 } 23 counter.iter().sum::<u64>().to_string() 24 } 25 26 fn part1(input: &Input) -> String { 27 solve(input, 80) 28 } 29 30 fn part2(input: &Input) -> String { 31 solve(input, 256) 32 } 33 34 aoc::main!(2021, 6, ex: 1);