From 96a9ea770254fdf369b43d57373178de6cec7a54 Mon Sep 17 00:00:00 2001 From: inga-lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Sat, 12 Dec 2020 21:03:31 +0100 Subject: [PATCH] Solution for day 9 --- day09/Cargo.toml | 9 +++++++++ day09/src/main.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 day09/Cargo.toml create mode 100644 day09/src/main.rs diff --git a/day09/Cargo.toml b/day09/Cargo.toml new file mode 100644 index 0000000..3ee0307 --- /dev/null +++ b/day09/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day09" +version = "0.1.0" +authors = ["inga-lovinde <52715130+inga-lovinde@users.noreply.github.com>"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day09/src/main.rs b/day09/src/main.rs new file mode 100644 index 0000000..3367ded --- /dev/null +++ b/day09/src/main.rs @@ -0,0 +1,46 @@ +use std::collections::HashMap; +use std::io::{self, BufRead}; + +const BLOCK_SIZE: usize = 25; + +fn main() { + let stdin = io::stdin(); + let numbers: Vec = stdin.lock().lines() + .map(|line| line.unwrap().parse().unwrap()) + .collect(); + + let mut part1_key = 0; + for i in BLOCK_SIZE..numbers.len() { + let mut found: bool = false; + for j in i-BLOCK_SIZE..i { + for k in j+1..i { + if numbers[j] + numbers[k] == numbers[i] { + found = true; + } + } + } + + if !found { + part1_key = i; + break; + } + } + + println!("{}", numbers[part1_key]); + + for i in 0..part1_key { + let mut sum = 0u128; + let mut smallest = u128::MAX; + let mut largest = u128::MIN; + for j in i..part1_key { + sum += numbers[j]; + smallest = u128::min(smallest, numbers[j]); + largest = u128::max(largest, numbers[j]); + if sum == numbers[part1_key] { + println!("{} ({},{})", smallest + largest, i, j); + return; + } + } + + } +}