diff options
Diffstat (limited to '2018/src/day1.rs')
-rw-r--r-- | 2018/src/day1.rs | 25 |
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!() +} |