From b4fd866928bdebab01923186d46a0ca3302f0c9c Mon Sep 17 00:00:00 2001 From: Rens Rooimans Date: Wed, 6 Dec 2023 08:50:02 +0100 Subject: [PATCH] day 6 --- .../Solutions/sol-2023/input/2023/day6.txt | 2 + AdventOfCode/Solutions/sol-2023/src/day5.rs | 2 +- AdventOfCode/Solutions/sol-2023/src/day6.rs | 53 +++++++++++++++++++ AdventOfCode/Solutions/sol-2023/src/lib.rs | 1 + 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 AdventOfCode/Solutions/sol-2023/input/2023/day6.txt create mode 100644 AdventOfCode/Solutions/sol-2023/src/day6.rs diff --git a/AdventOfCode/Solutions/sol-2023/input/2023/day6.txt b/AdventOfCode/Solutions/sol-2023/input/2023/day6.txt new file mode 100644 index 0000000..e5c8984 --- /dev/null +++ b/AdventOfCode/Solutions/sol-2023/input/2023/day6.txt @@ -0,0 +1,2 @@ +Time: 59 70 78 78 +Distance: 430 1218 1213 1276 diff --git a/AdventOfCode/Solutions/sol-2023/src/day5.rs b/AdventOfCode/Solutions/sol-2023/src/day5.rs index c01b286..46a6b3d 100644 --- a/AdventOfCode/Solutions/sol-2023/src/day5.rs +++ b/AdventOfCode/Solutions/sol-2023/src/day5.rs @@ -108,7 +108,7 @@ fn solve((seed_start, range_length): &(u32, u32), lookup: &Vec().unwrap()) + .zip(sections[1] + .strip_prefix("Distance:") + .unwrap() + .split_whitespace() + .map(|n| n.trim().parse::().unwrap())) + .collect::>(); +} + +#[aoc(day6, part1)] +pub fn part1(game: &Vec<(u64, u64)>) -> u64 { + return game + .iter() + .map(|(time, distance)| get_winning_options(*time, *distance)) + .fold(1, |acc, n| acc * n); +} + +#[aoc(day6, part2)] +pub fn part2(_game: &Vec<(u64, u64)>) -> u64 { + let time :u64 = 59707878; + let distance :u64= 430121812131276; + + return get_winning_options(time, distance); +} + +fn get_winning_options(time: u64, distance: u64) -> u64 { + let mut total_winners = 0; + for i in 0..= time { + if i * (time - i) > distance { + total_winners += 1; + } + } + return total_winners; +} + +#[cfg(test)] +mod tests { + use super::{input_generator, part1}; + + #[test] + fn basics() { + let input = "Time: 7 15 30 +Distance: 9 40 200"; + assert_eq!(part1(&input_generator(input)), 288); + } +} diff --git a/AdventOfCode/Solutions/sol-2023/src/lib.rs b/AdventOfCode/Solutions/sol-2023/src/lib.rs index 846f7a7..c4c6d2f 100644 --- a/AdventOfCode/Solutions/sol-2023/src/lib.rs +++ b/AdventOfCode/Solutions/sol-2023/src/lib.rs @@ -8,5 +8,6 @@ pub mod day2; pub mod day3; pub mod day4; pub mod day5; +pub mod day6; aoc_lib! { year = 2023 }