mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-14 17:45:02 +01:00
part 2
This commit is contained in:
parent
3ace5075d5
commit
040e2d4680
1 changed files with 31 additions and 8 deletions
|
|
@ -27,9 +27,11 @@ impl Day for Day09 {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse(input: &str) -> impl Iterator<Item = Vec<i64>> + '_ {
|
fn parse(input: &str) -> impl Iterator<Item = Vec<i64>> + '_ {
|
||||||
input
|
input.lines().map(|line| {
|
||||||
.lines()
|
line.split_ascii_whitespace()
|
||||||
.map(|line| line.split_ascii_whitespace().map(|s| s.parse().unwrap()).collect())
|
.map(|s| s.parse().unwrap())
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(input: &str) -> u64 {
|
fn part1(input: &str) -> u64 {
|
||||||
|
|
@ -50,20 +52,41 @@ fn part1(input: &str) -> u64 {
|
||||||
values = tmp;
|
values = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
last_values.into_iter().sum::<i64>()
|
last_values.into_iter().rev().sum::<i64>()
|
||||||
})
|
})
|
||||||
.sum::<i64>() as u64
|
.sum::<i64>() as u64
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2(_input: &str) -> u64 {
|
fn part2(input: &str) -> u64 {
|
||||||
0
|
parse(input)
|
||||||
|
.map(|mut values| {
|
||||||
|
let mut first_values = vec![*values.first().unwrap()];
|
||||||
|
|
||||||
|
let mut derive = values.clone();
|
||||||
|
|
||||||
|
while !derive.iter().all(|&n| n == 0) {
|
||||||
|
values.clear();
|
||||||
|
values.extend(derive.windows(2).map(|s| s[1] - s[0]));
|
||||||
|
|
||||||
|
first_values.push(*values.first().unwrap());
|
||||||
|
|
||||||
|
let tmp = derive;
|
||||||
|
derive = values;
|
||||||
|
values = tmp;
|
||||||
|
}
|
||||||
|
first_values
|
||||||
|
.into_iter()
|
||||||
|
.rev()
|
||||||
|
.fold(0, |acc, first| first - acc)
|
||||||
|
})
|
||||||
|
.sum::<i64>() as u64
|
||||||
}
|
}
|
||||||
|
|
||||||
helper::tests! {
|
helper::tests! {
|
||||||
day09 Day09;
|
day09 Day09;
|
||||||
part1 {
|
part1 {
|
||||||
small => 0;
|
small => 114;
|
||||||
default => 0;
|
default => 1934898178;
|
||||||
}
|
}
|
||||||
part2 {
|
part2 {
|
||||||
small => 0;
|
small => 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue