day 20 part 2

This commit is contained in:
2024-10-29 23:04:12 +01:00
parent 56c88ffec9
commit ef83390c02
2 changed files with 43 additions and 0 deletions

42
src/day20.rs Normal file
View File

@@ -0,0 +1,42 @@
use std::cmp::min;
use aoc_runner_derive::{aoc, aoc_generator};
#[aoc_generator(day20)]
fn parse(input: &str) -> u64 {
input.parse().unwrap()
}
#[aoc(day20, part1)]
fn part1(min_presents: &u64) -> usize {
let min_presents = (min_presents / 10) as usize;
let mut house_presents = vec![0; min_presents + 1];
for elf in 1..=min_presents {
for visited_house in (elf..=min_presents).step_by(elf) {
house_presents[visited_house] += elf;
}
}
house_presents
.into_iter()
.enumerate()
.find(|(_, value)| value >= &min_presents)
.unwrap()
.0
}
#[aoc(day20, part2)]
fn part2(min_presents: &u64) -> usize {
let min_presents = *min_presents as usize;
let mut house_presents = vec![0; min_presents + 1];
for elf in 1..=min_presents {
for visited_house in (elf..=min(min_presents, elf * 50)).step_by(elf) {
house_presents[visited_house] += elf * 11;
}
}
house_presents
.into_iter()
.enumerate()
.find(|(_, value)| value >= &min_presents)
.unwrap()
.0
}

View File

@@ -12,5 +12,6 @@ mod day16;
mod day17;
mod day18;
mod day19;
mod day20;
aoc_lib! { year = 2015 }