summary refs log tree commit diff homepage
path: root/2017/src
diff options
context:
space:
mode:
authorJune McEnroe <programble@gmail.com>2017-12-09 02:54:49 -0500
committerJune McEnroe <programble@gmail.com>2017-12-09 02:54:49 -0500
commit5dab9fee2c1d86adf13a14650cbaeb3d5b9862e8 (patch)
tree5ed1cec7ed00715b6c8b5149f0420cd5a14f8b5e /2017/src
parentDay 8 (diff)
downloadaoc-5dab9fee2c1d86adf13a14650cbaeb3d5b9862e8.tar.gz
aoc-5dab9fee2c1d86adf13a14650cbaeb3d5b9862e8.zip
Day 8, part 2
Diffstat (limited to '2017/src')
-rw-r--r--2017/src/bin/day08.rs27
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);
 }