day9
This commit is contained in:
parent
90561f8fa9
commit
b44361e14d
73
src/day9.rs
Normal file
73
src/day9.rs
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
use aoc_runner_derive::{aoc, aoc_generator};
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
const PREAMBLE_LEN: usize = 25;
|
||||||
|
|
||||||
|
#[aoc_generator(day9)]
|
||||||
|
fn parse(input: &str) -> Vec<u64> {
|
||||||
|
input.lines().map(str::parse).map(Result::unwrap).collect_vec()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc(day9, part1)]
|
||||||
|
fn part1(input: &Vec<u64>) -> u64 {
|
||||||
|
for i in PREAMBLE_LEN..input.len() {
|
||||||
|
if let None = input[i - PREAMBLE_LEN..i]
|
||||||
|
.iter()
|
||||||
|
.combinations(2)
|
||||||
|
.find(|x| x.iter().cloned().sum::<u64>() == input[i]) {
|
||||||
|
return input[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unreachable!()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc(day9, part2)]
|
||||||
|
fn part2(input: &Vec<u64>) -> u64 {
|
||||||
|
let to_find = part1(input);
|
||||||
|
|
||||||
|
for len in 2..input.len() {
|
||||||
|
if let Some(nums) = input
|
||||||
|
.windows(len)
|
||||||
|
.find(|x| x.iter().cloned().sum::<u64>() == to_find) {
|
||||||
|
return nums.iter().min().unwrap() + nums.iter().max().unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unreachable!()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const EX: &str = r"35
|
||||||
|
20
|
||||||
|
15
|
||||||
|
25
|
||||||
|
47
|
||||||
|
40
|
||||||
|
62
|
||||||
|
55
|
||||||
|
65
|
||||||
|
95
|
||||||
|
102
|
||||||
|
117
|
||||||
|
150
|
||||||
|
182
|
||||||
|
127
|
||||||
|
219
|
||||||
|
299
|
||||||
|
277
|
||||||
|
309
|
||||||
|
576";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_example() {
|
||||||
|
assert_eq!(part1(&parse(EX)), 127);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_example() {
|
||||||
|
assert_eq!(part2(&parse(EX)), 62);
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
mod day9;
|
||||||
mod day8;
|
mod day8;
|
||||||
mod day7;
|
mod day7;
|
||||||
mod day6;
|
mod day6;
|
||||||
|
Loading…
Reference in New Issue
Block a user