day 20 part 2
This commit is contained in:
42
src/day20.rs
Normal file
42
src/day20.rs
Normal 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
|
||||||
|
}
|
||||||
@@ -12,5 +12,6 @@ mod day16;
|
|||||||
mod day17;
|
mod day17;
|
||||||
mod day18;
|
mod day18;
|
||||||
mod day19;
|
mod day19;
|
||||||
|
mod day20;
|
||||||
|
|
||||||
aoc_lib! { year = 2015 }
|
aoc_lib! { year = 2015 }
|
||||||
|
|||||||
Reference in New Issue
Block a user