/ Rust / 2021 / 06.rs
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);