diff options
Diffstat (limited to 'src/08/part2')
| -rw-r--r-- | src/08/part2 | 33 |
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 [1m[37mexactly one instruction is corrupted[0m. + +Somewhere in the program, [1m[37meither[0m a jmp is supposed to be a nop, [1m[37mor[0m 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 [1m[37mattempting to execute an instruction immediately +after the last instruction in the file[0m. 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 [1m[37mnop[0m -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 [1m[37m8[0m (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). +[1m[37mWhat is the value of the accumulator after the program terminates?[0m + + |
