summaryrefslogtreecommitdiff
path: root/2018/src/day1.rs
diff options
context:
space:
mode:
Diffstat (limited to '2018/src/day1.rs')
-rw-r--r--2018/src/day1.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/2018/src/day1.rs b/2018/src/day1.rs
new file mode 100644
index 0000000..741f5b3
--- /dev/null
+++ b/2018/src/day1.rs
@@ -0,0 +1,25 @@
+use std::io;
+use std::io::BufRead;
+use std::collections::HashSet;
+
+pub fn main<T: BufRead>(reader: T) -> io::Result<()> {
+ let values: Vec<i64> =
+ reader.lines().map(|l| l.unwrap().parse::<i64>().unwrap()).collect();
+
+ println!("{}", values.iter().sum::<i64>());
+
+ let mut seen = HashSet::new();
+ seen.insert(0);
+
+ let mut res = 0;
+ for val in values.iter().cycle() {
+ res += val;
+ if seen.contains(&res) {
+ println!("{}", res);
+ return Ok(());
+ } else {
+ seen.insert(res);
+ }
+ }
+ unreachable!()
+}