-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathday8-puzzle2.txt
61 lines (46 loc) · 1.46 KB
/
day8-puzzle2.txt
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
--- 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.
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?