From 5a4ca1c2a1ff9e5accad2b884bab40bed60d5bea Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Thu, 7 Dec 2023 19:41:27 +0100 Subject: [PATCH] d6p2 i will not figure out the formula i will not figure out the formula i will not figure out the formula i will not figure out the formula i will not figure out the formula i will not figure out the formula --- 2023/day06/src/lib.rs | 65 ++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/2023/day06/src/lib.rs b/2023/day06/src/lib.rs index 37d0692..d3c9173 100644 --- a/2023/day06/src/lib.rs +++ b/2023/day06/src/lib.rs @@ -12,7 +12,7 @@ helper::define_variants! { basic => crate::part1; } part2 { - basic => crate::part2; + basic => crate::part2, sample_count=50; } } @@ -32,6 +32,21 @@ struct Race { distance: u64, } +impl Race { + fn winning_presses(&self) -> u64 { + let t = self.time; + + (0..t) + .filter(move |&i| { + let t_run = t - i; + let d = t_run * i; + + d > self.distance + }) + .count() as u64 + } +} + fn parse(input: &str) -> Vec { let lines = input.lines().collect_array::<2>().unwrap(); lines[0] @@ -48,36 +63,40 @@ fn parse(input: &str) -> Vec { fn part1(input: &str) -> u64 { let races = parse(input); - races - .iter() - .map(|race| { - let t = race.time; - - (0..t) - .filter(|&i| { - let t_run = t - i; - let d = t_run * i; - - d > race.distance - }) - .count() as u64 - }) - .product() + races.iter().map(Race::winning_presses).product() } -fn part2(_input: &str) -> u64 { - 0 +fn parse2(input: &str) -> Race { + let lines = input.lines().collect_array::<2>().unwrap().map(|line| { + line.split_ascii_whitespace() + .skip(1) + .collect::() + .parse() + .unwrap() + }); + + Race { + time: lines[0], + distance: lines[1], + } +} + +fn part2(input: &str) -> u64 { + let race = parse2(input); + race.winning_presses() } helper::tests! { day06 Day06; part1 { - small => 0; - default => 0; + small => 288; + default => 6209190; } part2 { - small => 0; - default => 0; + small => 71503; + default => 28545089; } } -helper::benchmarks! {} +helper::benchmarks! { + +}