-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmod.rs
26 lines (23 loc) · 896 Bytes
/
mod.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pub fn solve(input: String) {
let mut sum_one = 0;
let mut sum_two = 0;
for line in input.lines() {
let mut sequence: Vec<isize> = line.split_ascii_whitespace().map(|d| d.parse().unwrap()).collect();
let mut list_end = Vec::new();
let mut list_start = Vec::new();
let mut modifier = -1;
while !sequence.iter().all(|x| *x == 0) {
modifier *= -1;
list_end.push(modifier * sequence[sequence.len() - 1]);
list_start.push(sequence[0]);
let mut new_sequence = Vec::new();
for i in 0..sequence.len() - 1 {
new_sequence.push(sequence[i] - sequence[i+1]);
}
sequence = new_sequence;
}
sum_one += list_end.iter().sum::<isize>();
sum_two += list_start.iter().sum::<isize>();
}
aoc::print_solution(&[sum_one, sum_two]);
}