1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
|