aboutsummaryrefslogtreecommitdiffstats
path: root/src/08/part2
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2023-04-08 12:40:30 -0400
committerLouis Burda <quent.burda@gmail.com>2023-04-09 10:21:36 -0400
commit9282e95e8844afe856ba76ceb6d2c3010df8bb1a (patch)
treee35affc89b20324371381e079f7cb5f8a06aa81b /src/08/part2
parent2b5d4232879dc74491dabf54a0ddc958d66ebcec (diff)
downloadaoc2020-zig-master.tar.gz
aoc2020-zig-master.zip
Restructure repo and update solutions to zig 0.10.1HEADmaster
Diffstat (limited to 'src/08/part2')
-rw-r--r--src/08/part233
1 files changed, 33 insertions, 0 deletions
diff --git a/src/08/part2 b/src/08/part2
new file mode 100644
index 0000000..ea07683
--- /dev/null
+++ b/src/08/part2
@@ -0,0 +1,33 @@
+--- Part Two ---
+
+After some careful analysis, you believe that exactly one instruction is corrupted.
+
+Somewhere in the program, either a jmp is supposed to be a nop, or a nop
+is supposed to be a jmp. (No acc instructions were harmed in the corruption of this boot code.)
+
+The program is supposed to terminate by attempting to execute an instruction immediately
+after the last instruction in the file. By changing exactly one jmp or nop, you can repair the
+boot code and make it terminate correctly.
+
+For example, consider the same program from above:
+
+nop +0 acc +1 jmp +4 acc +3 jmp -3 acc -99 acc +1 jmp -4 acc +6
+
+If you change the first instruction from nop +0 to jmp +0, it would create a single-instruction
+infinite loop, never leaving that instruction. If you change almost any of the jmp instructions, the
+program will still eventually find another jmp instruction and loop forever.
+
+However, if you change the second-to-last instruction (from jmp -4 to nop -4), the program
+terminates! The instructions are visited in this order:
+
+nop +0 | 1 acc +1 | 2 jmp +4 | 3 acc +3 | jmp -3 | acc -99 | acc +1 | 4 nop -4 | 5 acc
++6 | 6
+
+After the last instruction (acc +6), the program terminates by attempting to run the instruction
+below the last instruction in the file. With this change, after the program terminates, the
+accumulator contains the value 8 (acc +1, acc +1, acc +6).
+
+Fix the program so that it terminates normally by changing exactly one jmp (to nop) or nop (to jmp).
+What is the value of the accumulator after the program terminates?
+
+