diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-10 01:01:52 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-10 01:01:52 +0100 |
| commit | 261fccb18f48f5a058e8d5487cab252b4727ba36 (patch) | |
| tree | c9096bb69520555ed6ce79c0cc8356bd91062b8b /src/day9pt2.rs | |
| parent | 023e428b2669b13b769a946341c08f1a8006a31d (diff) | |
day9
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); +} |
