diff --git a/2018/src/main.rs b/2018/src/main.rs index 0e977de..b722376 100644 --- a/2018/src/main.rs +++ b/2018/src/main.rs @@ -1,13 +1,40 @@ +use std::collections; use std::str; -fn main() { +fn day1part1() -> i64 { let input = include_str!("day1-input.txt"); let mut freq = 0; for line in str::lines(input) { - match line.parse::() { + match line.parse::() { Ok(d) => freq += d, Err(s) => println!("{}", s), } } - println!("{}", freq); + freq +} + +fn day1part2() -> i64 { + let input = include_str!("day1-input.txt"); + let mut freqs = collections::HashSet::new(); + let mut freq = 0; + freqs.insert(freq); + loop { + for line in str::lines(input) { + match line.parse::() { + Ok(d) => { + freq += d; + if freqs.contains(&freq) { + return freq; + } + freqs.insert(freq); + } + Err(s) => println!("{}", s), + } + } + } +} + +fn main() { + println!("{}", day1part1()); + println!("{}", day1part2()); }