From 18ea21dde6a58a43087391ae6864f4dae85f97b3 Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 13 Jan 2024 20:05:51 +0100 Subject: [PATCH] Day 14 part 1. --- src/day14.rs | 35 +++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 36 insertions(+) create mode 100644 src/day14.rs diff --git a/src/day14.rs b/src/day14.rs new file mode 100644 index 0000000..e5f3df9 --- /dev/null +++ b/src/day14.rs @@ -0,0 +1,35 @@ +use aoc_runner_derive::{aoc, aoc_generator}; + +#[aoc_generator(day14)] +fn parse(input: &str) -> Vec<(usize, usize, usize)> { + input.lines() + .map(|line| { + // Rudolph can fly 22 km/s for 8 seconds, but then must rest for 165 seconds. + let parts: Vec<&str> = line.split(" ").collect(); + let speed = parts[3].parse::().unwrap(); + let fly = parts[6].parse::().unwrap(); + let rest = parts[13].parse::().unwrap(); + (speed, fly, rest) + }) + .collect() +} + +#[aoc(day14, part1)] +fn part1(input: &Vec<(usize, usize, usize)>) -> usize { + let seconds = 2503; + input.into_iter() + .map(|&(speed, fly, rest)| { + let cycle = fly + rest; + let full = seconds / cycle; + let rem = seconds % cycle; + let partial = if rem < fly { rem } else { fly }; + (full * fly + partial) * speed + }) + .max() + .unwrap() +} + +// #[aoc(day14, part2)] +// fn part2(input: &str) -> String { +// todo!() +// } diff --git a/src/lib.rs b/src/lib.rs index 32f9452..5118051 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,5 +6,6 @@ mod day10; mod day11; mod day12; mod day13; +mod day14; aoc_lib! { year = 2015 }