diff options
Diffstat (limited to '2017')
-rw-r--r-- | 2017/src/bin/day08.rs | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/2017/src/bin/day08.rs b/2017/src/bin/day08.rs index e5a9ad0..4266d31 100644 --- a/2017/src/bin/day08.rs +++ b/2017/src/bin/day08.rs @@ -1,7 +1,8 @@ use std::collections::HashMap; use std::io::{self, Read}; -fn solve1(input: &str) -> i32 { +fn solve(input: &str) -> (i32, i32) { + let mut max = 0; let mut regs = HashMap::new(); for line in input.lines() { let mut words = line.split_whitespace(); @@ -33,25 +34,41 @@ fn solve1(input: &str) -> i32 { if cond { *dest += val; } + if *dest > max { + max = *dest; + } } - regs.values().cloned().max().unwrap() + (regs.values().cloned().max().unwrap(), max) } fn main() { let mut input = String::new(); io::stdin().read_to_string(&mut input).unwrap(); - println!("Part 1: {}", solve1(&input)); + println!("Part 1: {}", solve(&input).0); + println!("Part 2: {}", solve(&input).1); } #[test] fn part1() { - assert_eq!(1, solve1( + assert_eq!(1, solve( +"\ +b inc 5 if a > 1 +a inc 1 if b < 5 +c dec -10 if a >= 1 +c inc -20 if c == 10 +" + ).0); +} + +#[test] +fn part2() { + assert_eq!(10, solve( "\ b inc 5 if a > 1 a inc 1 if b < 5 c dec -10 if a >= 1 c inc -20 if c == 10 " - )); + ).1); } |