summary refs log tree commit diff homepage
path: root/2017/src/bin
diff options
context:
space:
mode:
authorJune McEnroe <programble@gmail.com>2017-12-09 02:54:49 -0500
committerJune McEnroe <june@causal.agency>2020-11-22 00:14:25 -0500
commit1ef24f101f17e298fd9614ec2521afae5f894ac1 (patch)
treeeb7a8b8ce8f7d1698fe8c70f0b19f5e34721e4f7 /2017/src/bin
parentDay 8 (diff)
downloadaoc-1ef24f101f17e298fd9614ec2521afae5f894ac1.tar.gz
aoc-1ef24f101f17e298fd9614ec2521afae5f894ac1.zip
Day 8, part 2
Diffstat (limited to '')
-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);
 }