diff options
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(); } |
