diff options
Diffstat (limited to 'src/day9pt2.rs')
| -rw-r--r-- | src/day9pt2.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/day9pt2.rs b/src/day9pt2.rs new file mode 100644 index 0000000..67324ea --- /dev/null +++ b/src/day9pt2.rs @@ -0,0 +1,39 @@ +pub fn main() { + let txt = std::fs::read_to_string("./input/day9.txt").unwrap(); + let mut sum: i64 = 0; + + for line in txt.lines() { + let mut razlike_all = vec![]; + let mut razlike = vec![]; + let mut brojevi: Vec<i64> = line.split(" ").map(|s| s.parse::<i64>().unwrap()).collect(); + + razlike_all.push(brojevi.clone()); + while !brojevi.is_empty() { + let mut ind: bool = true; + for i in 0..brojevi.len() { + if brojevi[i] != 0 { + ind = false; + } + } + if ind { + break; + } + + for i in 0..brojevi.len() - 1 { + razlike.push(brojevi[i + 1] - brojevi[i]); + } + razlike_all.push(razlike.clone()); + brojevi = razlike.clone(); + razlike.clear(); + } + + let mut trn: i64 = 0; + for i in 0..razlike_all.len() { + trn = razlike_all[razlike_all.len() - 1 - i][0] as i64 - trn; + } + + sum += trn; + } + + println!("{}", sum); +} |
