summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Tuomi <jan.tuomi@eficode.com>2018-12-05 15:44:41 +0200
committerJan Tuomi <jan.tuomi@eficode.com>2018-12-05 15:44:41 +0200
commit4641b367cf397f05440cc042d9ef0fc700278cff (patch)
tree9eecc16b80030d355a63185f74af0175b04dd5e2
parentf70c926c17bc244bf51e8c05d891b0b13528fe8a (diff)
Solve day 1.2
-rw-r--r--day1/src/main.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/day1/src/main.rs b/day1/src/main.rs
index f9b93ce..972b1ee 100644
--- a/day1/src/main.rs
+++ b/day1/src/main.rs
@@ -3,6 +3,7 @@ use std::io::BufReader;
use std::io::BufRead;
use std::fs::File;
use std::process;
+use std::collections::HashSet;
fn main() {
let args: Vec<String> = env::args().collect();
@@ -22,6 +23,7 @@ fn main() {
let file = BufReader::new(&f);
let mut diffs: Vec<i32> = Vec::new();
+ // exercise 1
for line in file.lines() {
let l = line.unwrap();
let res = l.parse::<i32>();
@@ -37,5 +39,20 @@ fn main() {
}
let result: i32 = diffs.iter().fold(0, |acc, x| acc + x);
- println!("{}", result);
+ println!("Exercise 1: {}", result);
+
+ // exercise 2
+ let mut found = HashSet::new();
+ found.insert(0);
+ let mut sum = 0;
+ loop {
+ for diff in &diffs {
+ sum = sum + diff;
+ if found.contains(&sum) {
+ println!("Exercise 2: {}", &sum);
+ process::exit(0);
+ }
+ found.insert(sum);
+ }
+ }
}