From 6983ebdf268c4a52f673c92a88b424d73dbbee11 Mon Sep 17 00:00:00 2001 From: Tobi Date: Tue, 7 Dec 2021 00:25:05 +0100 Subject: [PATCH] Rewrote code for part 2 --- december_6/src/main.rs | 46 +++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/december_6/src/main.rs b/december_6/src/main.rs index ea6281a..838767d 100644 --- a/december_6/src/main.rs +++ b/december_6/src/main.rs @@ -1,40 +1,48 @@ use std::{fs::read_to_string}; const ITERATIONS: u32 = 256; -const NEW_FISH_LIFETIME: u8 = 8; fn main() { let input_char_vec = read_to_string("./input.txt").expect("ERROR reading file"); let split_input = input_char_vec.split(",").collect::>(); - let mut fish: Vec = split_input.iter().map( + let starting_fishes: Vec = split_input.iter().map( |x| x.parse::().unwrap() ).collect(); - print_fish(&fish, -1); + let mut fish: Vec = vec![0,0,0,0,0,0,0,0,0]; - for _i in 1..ITERATIONS + 1 { - for fi in 0..fish.len() { - let current_timer = fish[fi]; - if current_timer == 0 { - fish[fi] = 6; - fish.push(NEW_FISH_LIFETIME); - } else { - fish[fi] = current_timer - 1; - } - } - println!("Interation {} of {}, {}", _i, ITERATIONS, fish.len()); - //print_fish(&fish, _i as i32); + for fi in starting_fishes{ + fish[fi as usize] = fish[fi as usize] + 1; } + print_fish(&fish, -1); - println!("Final Number of Fish: {}", fish.len()); + for _i in 1..ITERATIONS + 1 { + let zero_fish = fish[0]; + + for timer in 1..=8 { + fish[timer-1] = fish[timer]; + } + + fish[6] = fish[6] + zero_fish; + fish[8] = zero_fish; + print_fish(&fish, _i as i32); + } + + let mut sum: u128 = 0; + for f in fish { + sum += f as u128; + } + println!("Final Number of Fish: {}", sum); } -fn print_fish(fish: &Vec, iteration: i32){ + + +fn print_fish(fish: &Vec, iteration: i32){ let fish_copy = fish.to_owned(); print!("Iteration: {}, Fish: ", iteration); - for f in fish_copy { - print!("{}, ", f); + for f in 0..fish_copy.len() { + print!("{},{} ", f, fish_copy[f]); } print!("\n"); }