diff options
| -rw-r--r-- | day1/src/main.rs | 19 |
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); + } + } } |
