summaryrefslogtreecommitdiffstats
path: root/day1
diff options
context:
space:
mode:
Diffstat (limited to 'day1')
-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);
+ }
+ }
}