From 110bcf963c8017b7a51e84555da9757b557dac1d Mon Sep 17 00:00:00 2001 From: OMGeeky <39029799+OMGeeky@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:16:24 +0000 Subject: [PATCH] day06 part 2 --- src/day06.rs | 38 ++++++++++++++++++++++++++++++-------- src/main.rs | 3 +-- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/day06.rs b/src/day06.rs index 68c6999..c536b99 100644 --- a/src/day06.rs +++ b/src/day06.rs @@ -25,10 +25,24 @@ Distance: 9 40 200" .product() } } +impl DayPart2 for Day06 { + fn run_part2(data: Self::Input) -> Self::Output { + data.race_part2.get_amount_of_winning_accelarations() + } + + fn get_test_result_part2() -> Self::Output { + 71503 + } + + fn get_test_data_part2() -> Self::Input { + Self::get_test_data() + } +} #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Scoreboard { races: Vec, + race_part2: Race, } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Race { @@ -44,7 +58,7 @@ impl Race { let mut result = 0; for i in 0..self.duration { let time_left = self.duration - i; - if i * time_left > self.distance{ + if i * time_left > self.distance { result += 1; } } @@ -55,22 +69,24 @@ impl Race { impl From for Scoreboard { fn from(value: String) -> Self { let mut lines = value.lines(); - let durations = lines + let duration = lines .next() .unwrap() .trim() .strip_prefix("Time:") .unwrap() - .trim() - .split_ascii_whitespace(); - let distances = lines + .trim(); + let durations = duration.split_ascii_whitespace(); + + let distance = lines .next() .unwrap() .trim() .strip_prefix("Distance:") .unwrap() - .trim() - .split_ascii_whitespace(); + .trim(); + let distances = distance.split_ascii_whitespace(); + let mut races = vec![]; for (duration, distance) in durations.zip(distances) { let duration: u64 = duration.parse().unwrap(); @@ -78,6 +94,12 @@ impl From for Scoreboard { races.push(Race { duration, distance }); } - Self { races } + let duration = duration.replace(' ', ""); + let distance = distance.replace(' ', ""); + let duration: u64 = duration.parse().unwrap(); + let distance: u64 = distance.parse().unwrap(); + let race_part2 = Race { duration, distance }; + + Self { races, race_part2 } } } diff --git a/src/main.rs b/src/main.rs index cd713c5..03653ca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,8 +7,7 @@ fn main() { // Day03::part1(); // Day04::run_all(); // Day05::run_all(); - // Day06::run_all(); - Day06::part1(); + Day06::run_all(); // utils::run!(01); // utils::run!(02);