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 | |
| parent | 023e428b2669b13b769a946341c08f1a8006a31d (diff) | |
day9
Diffstat (limited to 'src')
| -rw-r--r-- | src/day9pt1.rs | 39 | ||||
| -rw-r--r-- | src/day9pt2.rs | 39 | ||||
| -rw-r--r-- | src/main.rs | 8 |
3 files changed, 82 insertions, 4 deletions
diff --git a/src/day9pt1.rs b/src/day9pt1.rs new file mode 100644 index 0000000..fa6b18f --- /dev/null +++ b/src/day9pt1.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 sl: i64 = 0; + for i in razlike_all { + sl += i[i.len() - 1] as i64; + } + + sum += sl; + } + + println!("{}", sum); +} 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); +} diff --git a/src/main.rs b/src/main.rs index 1749ed4..3f23276 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ -mod day8pt1; -mod day8pt2; +mod day9pt1; +mod day9pt2; fn main() { - day8pt1::main(); - day8pt2::main(); + day9pt1::main(); + day9pt2::main(); } |
