From 3dea0ef91405c9de1057c8e430858b47f0984aa5 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Mon, 6 Dec 2021 10:16:51 -0500 Subject: [PATCH] Day 6 --- input/day6.txt | 1 + src/day6.rs | 41 +++++++++++++++++++++++++++++++++++++++++ src/main.rs | 3 ++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 input/day6.txt create mode 100644 src/day6.rs diff --git a/input/day6.txt b/input/day6.txt new file mode 100644 index 0000000..c696217 --- /dev/null +++ b/input/day6.txt @@ -0,0 +1 @@ +1,3,4,1,1,1,1,1,1,1,1,2,2,1,4,2,4,1,1,1,1,1,5,4,1,1,2,1,1,1,1,4,1,1,1,4,4,1,1,1,1,1,1,1,2,4,1,3,1,1,2,1,2,1,1,4,1,1,1,4,3,1,3,1,5,1,1,3,4,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,5,5,3,2,1,5,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,5,1,1,1,1,5,1,1,1,1,1,4,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,2,4,1,5,5,1,1,5,3,4,4,4,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,5,3,1,4,1,1,2,2,1,2,2,5,1,1,1,2,1,1,1,1,3,4,5,1,2,1,1,1,1,1,5,2,1,1,1,1,1,1,5,1,1,1,1,1,1,1,5,1,4,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,5,4,5,1,1,1,1,1,1,1,5,1,1,3,1,1,1,3,1,4,2,1,5,1,3,5,5,2,1,3,1,1,1,1,1,3,1,3,1,1,2,4,3,1,4,2,2,1,1,1,1,1,1,1,5,2,1,1,1,2 diff --git a/src/day6.rs b/src/day6.rs new file mode 100644 index 0000000..253dada --- /dev/null +++ b/src/day6.rs @@ -0,0 +1,41 @@ +pub fn day6() { + // let input = "3,4,3,1,2"; + let input = include_str!("../input/day6.txt"); + + let initial_fishes = input + .trim() + .split(",") + .map(|s| s.parse::().unwrap()) + .collect::>(); + + count_fishes_after(&initial_fishes, 18); + count_fishes_after(&initial_fishes, 80); + count_fishes_after(&initial_fishes, 256); +} + +fn count_fishes_after(initial_fishes: &[usize], days: u32) { + let mut fish_batches = [0_u64; 9]; + + for f in initial_fishes { + fish_batches[*f] += 1; + } + + for _ in 1..=days { + let old_batches = fish_batches; + fish_batches = [0; 9]; + + for counter in 0..=7 { + fish_batches[counter] = old_batches[counter + 1]; + } + + // each fish previously at 0 spawns a new fish with counter 8 and resets its counter to 6 + fish_batches[8] = old_batches[0]; + fish_batches[6] += old_batches[0]; + } + + println!( + "total fishes after {} days: {}", + days, + fish_batches.iter().sum::() + ); +} diff --git a/src/main.rs b/src/main.rs index 41d3cbb..f057f1c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,8 @@ mod day2; mod day3; mod day4; mod day5; +mod day6; fn main() { - day5::day5(); + day6::day6(); }