mirror of
https://github.com/OMGeeky/advent-of-code-2023.git
synced 2026-02-23 15:38:26 +01:00
day06 part 2
This commit is contained in:
38
src/day06.rs
38
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>,
|
||||
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<String> 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<String> 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 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user