Complete day 8
This commit is contained in:
parent
20880212b7
commit
d830430717
|
@ -0,0 +1,641 @@
|
|||
acc +3
|
||||
jmp +599
|
||||
nop +311
|
||||
jmp +605
|
||||
acc -3
|
||||
acc +50
|
||||
acc -6
|
||||
jmp +461
|
||||
jmp -4
|
||||
acc -7
|
||||
jmp +1
|
||||
acc +19
|
||||
acc -18
|
||||
jmp +485
|
||||
nop +182
|
||||
jmp +174
|
||||
acc +41
|
||||
acc +10
|
||||
nop +570
|
||||
jmp +428
|
||||
acc +18
|
||||
acc +33
|
||||
jmp +197
|
||||
jmp +202
|
||||
acc +43
|
||||
acc -19
|
||||
acc -12
|
||||
jmp +453
|
||||
acc +8
|
||||
jmp +55
|
||||
acc +5
|
||||
nop +482
|
||||
acc -11
|
||||
jmp +475
|
||||
acc -5
|
||||
acc +38
|
||||
acc -16
|
||||
nop +111
|
||||
jmp +230
|
||||
acc +41
|
||||
acc -4
|
||||
jmp +16
|
||||
nop +147
|
||||
jmp -15
|
||||
nop -28
|
||||
jmp +96
|
||||
acc +34
|
||||
acc +27
|
||||
jmp -25
|
||||
jmp +8
|
||||
acc +8
|
||||
nop +28
|
||||
jmp +515
|
||||
jmp +247
|
||||
jmp +474
|
||||
nop +392
|
||||
jmp +57
|
||||
nop +271
|
||||
acc +20
|
||||
jmp +514
|
||||
acc +22
|
||||
jmp +337
|
||||
acc +47
|
||||
acc +43
|
||||
acc +42
|
||||
nop +263
|
||||
jmp +144
|
||||
acc +26
|
||||
acc +49
|
||||
acc +22
|
||||
jmp +170
|
||||
nop +502
|
||||
acc +26
|
||||
acc -3
|
||||
jmp +96
|
||||
acc -9
|
||||
nop +213
|
||||
acc +1
|
||||
jmp +111
|
||||
nop +189
|
||||
jmp +533
|
||||
acc -18
|
||||
acc -15
|
||||
jmp +209
|
||||
nop +464
|
||||
jmp +463
|
||||
acc +16
|
||||
acc +39
|
||||
acc +36
|
||||
jmp +499
|
||||
acc +42
|
||||
jmp +1
|
||||
jmp +444
|
||||
acc +33
|
||||
acc -5
|
||||
nop +513
|
||||
acc +17
|
||||
jmp +377
|
||||
jmp +410
|
||||
acc -5
|
||||
jmp +312
|
||||
jmp +235
|
||||
acc -4
|
||||
acc +32
|
||||
acc +40
|
||||
jmp +477
|
||||
jmp +388
|
||||
jmp +112
|
||||
acc +45
|
||||
acc +36
|
||||
jmp -68
|
||||
nop +296
|
||||
jmp +496
|
||||
acc -19
|
||||
acc +1
|
||||
acc -8
|
||||
jmp +1
|
||||
jmp +479
|
||||
jmp +195
|
||||
acc -13
|
||||
acc +50
|
||||
acc +30
|
||||
jmp +167
|
||||
jmp +217
|
||||
acc +17
|
||||
acc +8
|
||||
jmp +22
|
||||
acc +46
|
||||
acc -5
|
||||
jmp +53
|
||||
jmp +152
|
||||
acc +29
|
||||
acc +1
|
||||
acc +24
|
||||
jmp +278
|
||||
acc +20
|
||||
jmp +95
|
||||
acc +15
|
||||
jmp +1
|
||||
acc +36
|
||||
jmp +286
|
||||
acc +44
|
||||
acc +33
|
||||
jmp +117
|
||||
acc +12
|
||||
acc +16
|
||||
jmp +1
|
||||
jmp +284
|
||||
acc -15
|
||||
nop +478
|
||||
acc -17
|
||||
jmp +13
|
||||
nop +274
|
||||
nop +217
|
||||
nop +91
|
||||
jmp -113
|
||||
nop -58
|
||||
acc +11
|
||||
acc +28
|
||||
nop +301
|
||||
jmp +132
|
||||
acc -7
|
||||
acc +18
|
||||
jmp +173
|
||||
acc +39
|
||||
nop +435
|
||||
jmp +388
|
||||
acc +15
|
||||
acc +50
|
||||
jmp +152
|
||||
acc -8
|
||||
acc -10
|
||||
acc +15
|
||||
acc +39
|
||||
jmp +166
|
||||
acc +14
|
||||
jmp +310
|
||||
nop +371
|
||||
acc +26
|
||||
jmp +161
|
||||
acc +37
|
||||
jmp -147
|
||||
acc -12
|
||||
acc +37
|
||||
nop -78
|
||||
jmp +11
|
||||
acc +5
|
||||
nop -130
|
||||
jmp +182
|
||||
acc +23
|
||||
acc +17
|
||||
jmp -14
|
||||
acc +42
|
||||
acc +16
|
||||
acc +40
|
||||
jmp -39
|
||||
nop +325
|
||||
acc +15
|
||||
jmp +70
|
||||
acc +39
|
||||
acc +13
|
||||
nop +211
|
||||
jmp +210
|
||||
acc -18
|
||||
nop +384
|
||||
acc +28
|
||||
jmp -98
|
||||
acc +21
|
||||
acc +12
|
||||
jmp +217
|
||||
acc +22
|
||||
acc +4
|
||||
acc +12
|
||||
jmp +421
|
||||
acc +26
|
||||
nop +298
|
||||
acc +1
|
||||
acc +43
|
||||
jmp -15
|
||||
acc +39
|
||||
nop +217
|
||||
nop +31
|
||||
acc +17
|
||||
jmp -189
|
||||
jmp -68
|
||||
acc -14
|
||||
jmp +287
|
||||
nop +62
|
||||
acc +20
|
||||
acc +50
|
||||
jmp -5
|
||||
acc +26
|
||||
acc -14
|
||||
acc +24
|
||||
acc -2
|
||||
jmp -181
|
||||
acc +12
|
||||
nop -89
|
||||
acc +13
|
||||
jmp -50
|
||||
acc +39
|
||||
jmp +233
|
||||
nop -214
|
||||
acc +47
|
||||
jmp +216
|
||||
acc +21
|
||||
acc +30
|
||||
nop +347
|
||||
acc +34
|
||||
jmp -240
|
||||
nop -196
|
||||
jmp +345
|
||||
acc +48
|
||||
acc +43
|
||||
acc +4
|
||||
nop +266
|
||||
jmp +72
|
||||
acc +7
|
||||
acc +43
|
||||
jmp +1
|
||||
acc +44
|
||||
acc +1
|
||||
acc +21
|
||||
jmp +358
|
||||
acc +20
|
||||
acc +28
|
||||
acc +48
|
||||
jmp +266
|
||||
acc +14
|
||||
acc +30
|
||||
jmp +167
|
||||
nop +18
|
||||
acc +17
|
||||
nop +125
|
||||
acc +14
|
||||
jmp -111
|
||||
nop +332
|
||||
acc -12
|
||||
nop -177
|
||||
jmp +355
|
||||
acc -8
|
||||
jmp -125
|
||||
acc +6
|
||||
jmp -185
|
||||
nop +270
|
||||
acc +32
|
||||
acc +19
|
||||
acc -9
|
||||
jmp +339
|
||||
jmp -13
|
||||
nop +23
|
||||
jmp -109
|
||||
acc -4
|
||||
acc +23
|
||||
acc +39
|
||||
nop +305
|
||||
jmp +130
|
||||
nop -57
|
||||
acc +46
|
||||
jmp +301
|
||||
jmp +1
|
||||
jmp +150
|
||||
acc -6
|
||||
nop -184
|
||||
acc +18
|
||||
jmp -123
|
||||
acc +11
|
||||
acc +40
|
||||
jmp -304
|
||||
acc +16
|
||||
acc +26
|
||||
nop -307
|
||||
jmp +3
|
||||
jmp -194
|
||||
jmp -224
|
||||
acc +8
|
||||
acc +22
|
||||
acc +1
|
||||
acc -1
|
||||
jmp +73
|
||||
jmp +41
|
||||
acc +40
|
||||
jmp +80
|
||||
acc +0
|
||||
acc +39
|
||||
acc +6
|
||||
acc +45
|
||||
jmp -186
|
||||
acc +32
|
||||
acc -5
|
||||
jmp -99
|
||||
acc +47
|
||||
acc +17
|
||||
acc +1
|
||||
acc +0
|
||||
jmp +265
|
||||
jmp +264
|
||||
nop +114
|
||||
acc +13
|
||||
jmp -108
|
||||
nop -278
|
||||
acc +29
|
||||
acc -14
|
||||
jmp -297
|
||||
acc +20
|
||||
acc +37
|
||||
nop +175
|
||||
acc -4
|
||||
jmp +9
|
||||
acc -11
|
||||
nop +136
|
||||
acc +2
|
||||
jmp -37
|
||||
acc +48
|
||||
acc +9
|
||||
acc -7
|
||||
jmp +36
|
||||
acc -15
|
||||
jmp -118
|
||||
acc -9
|
||||
jmp -68
|
||||
acc +26
|
||||
nop -1
|
||||
acc +9
|
||||
jmp -15
|
||||
acc +21
|
||||
acc +13
|
||||
acc -2
|
||||
acc -17
|
||||
jmp -365
|
||||
acc +5
|
||||
acc +8
|
||||
jmp +255
|
||||
acc +16
|
||||
nop -312
|
||||
acc -14
|
||||
jmp -19
|
||||
acc +32
|
||||
acc +37
|
||||
acc +9
|
||||
jmp +1
|
||||
jmp -302
|
||||
jmp +1
|
||||
acc +5
|
||||
acc +45
|
||||
acc +42
|
||||
jmp +61
|
||||
acc +20
|
||||
acc +36
|
||||
jmp +156
|
||||
acc -9
|
||||
jmp +117
|
||||
acc -1
|
||||
nop -389
|
||||
jmp +242
|
||||
acc +9
|
||||
acc -18
|
||||
jmp -5
|
||||
jmp -77
|
||||
acc +17
|
||||
acc +30
|
||||
jmp +172
|
||||
acc -1
|
||||
acc +11
|
||||
acc -6
|
||||
jmp -334
|
||||
jmp +215
|
||||
acc +3
|
||||
acc +24
|
||||
jmp +13
|
||||
jmp +1
|
||||
jmp -369
|
||||
acc +49
|
||||
acc -6
|
||||
acc -14
|
||||
acc -6
|
||||
jmp -234
|
||||
acc +13
|
||||
acc +9
|
||||
acc +11
|
||||
nop +78
|
||||
jmp +115
|
||||
nop -332
|
||||
nop +177
|
||||
jmp +109
|
||||
jmp +157
|
||||
nop -372
|
||||
acc +25
|
||||
jmp +166
|
||||
nop +171
|
||||
jmp -253
|
||||
acc +27
|
||||
acc -11
|
||||
acc -4
|
||||
acc +34
|
||||
jmp +98
|
||||
jmp -240
|
||||
acc +41
|
||||
nop -381
|
||||
acc -4
|
||||
nop -270
|
||||
jmp -328
|
||||
acc +31
|
||||
acc +11
|
||||
acc -2
|
||||
nop -163
|
||||
jmp +148
|
||||
jmp +1
|
||||
nop -91
|
||||
jmp -197
|
||||
jmp +132
|
||||
acc +31
|
||||
nop +109
|
||||
acc +43
|
||||
jmp -319
|
||||
acc -19
|
||||
acc +49
|
||||
acc +38
|
||||
acc +48
|
||||
jmp +86
|
||||
acc -1
|
||||
acc -11
|
||||
acc +2
|
||||
jmp -355
|
||||
acc -3
|
||||
acc +11
|
||||
acc +39
|
||||
jmp -110
|
||||
acc +10
|
||||
nop -465
|
||||
nop -121
|
||||
jmp -110
|
||||
acc +0
|
||||
jmp -5
|
||||
nop -278
|
||||
nop -199
|
||||
nop +118
|
||||
acc +6
|
||||
jmp -47
|
||||
jmp +129
|
||||
acc +26
|
||||
jmp -391
|
||||
acc -15
|
||||
acc +8
|
||||
nop -86
|
||||
jmp +115
|
||||
nop -94
|
||||
acc -7
|
||||
acc +14
|
||||
jmp -183
|
||||
acc -16
|
||||
acc +15
|
||||
acc +23
|
||||
jmp -178
|
||||
jmp +1
|
||||
jmp -365
|
||||
jmp +1
|
||||
jmp -320
|
||||
acc +42
|
||||
nop -289
|
||||
acc +21
|
||||
acc -17
|
||||
jmp -440
|
||||
acc +0
|
||||
acc +5
|
||||
acc +35
|
||||
acc +20
|
||||
jmp +29
|
||||
acc -1
|
||||
acc +20
|
||||
acc +44
|
||||
jmp +50
|
||||
jmp -61
|
||||
acc -2
|
||||
acc +41
|
||||
acc -5
|
||||
jmp -410
|
||||
acc +13
|
||||
nop -315
|
||||
acc -2
|
||||
jmp -46
|
||||
acc +20
|
||||
acc +9
|
||||
acc +38
|
||||
nop -279
|
||||
jmp -113
|
||||
acc +48
|
||||
jmp +86
|
||||
jmp -151
|
||||
jmp +1
|
||||
acc -18
|
||||
nop -291
|
||||
jmp -101
|
||||
jmp +49
|
||||
nop -378
|
||||
jmp -445
|
||||
acc +36
|
||||
acc +41
|
||||
nop -286
|
||||
acc -19
|
||||
jmp -142
|
||||
nop -393
|
||||
acc +0
|
||||
acc -3
|
||||
jmp +10
|
||||
acc +17
|
||||
jmp -327
|
||||
jmp -219
|
||||
acc -5
|
||||
nop -123
|
||||
acc +49
|
||||
acc +36
|
||||
jmp -145
|
||||
jmp -496
|
||||
jmp +48
|
||||
acc +10
|
||||
jmp +11
|
||||
jmp -97
|
||||
acc -8
|
||||
acc +22
|
||||
jmp +53
|
||||
jmp -316
|
||||
acc +32
|
||||
acc -15
|
||||
acc +27
|
||||
acc +33
|
||||
jmp -266
|
||||
jmp -10
|
||||
acc +48
|
||||
acc -10
|
||||
acc +7
|
||||
acc +5
|
||||
jmp +28
|
||||
acc -15
|
||||
acc -19
|
||||
acc -8
|
||||
nop -150
|
||||
jmp -388
|
||||
acc +14
|
||||
acc +45
|
||||
acc -11
|
||||
jmp -451
|
||||
acc +42
|
||||
acc -8
|
||||
jmp -104
|
||||
nop -228
|
||||
acc +0
|
||||
jmp -327
|
||||
acc +19
|
||||
acc -7
|
||||
jmp +1
|
||||
jmp -291
|
||||
acc -8
|
||||
jmp -495
|
||||
jmp -61
|
||||
jmp -392
|
||||
acc +1
|
||||
jmp -227
|
||||
acc -10
|
||||
jmp -286
|
||||
jmp -397
|
||||
jmp -539
|
||||
jmp -215
|
||||
acc +15
|
||||
acc +36
|
||||
acc -12
|
||||
acc +5
|
||||
jmp -147
|
||||
acc +28
|
||||
acc -15
|
||||
acc +19
|
||||
jmp +16
|
||||
jmp -493
|
||||
acc +7
|
||||
acc +40
|
||||
acc +23
|
||||
nop -122
|
||||
jmp -567
|
||||
acc -4
|
||||
acc +23
|
||||
jmp -218
|
||||
jmp -13
|
||||
acc -18
|
||||
acc -10
|
||||
acc -13
|
||||
nop -541
|
||||
jmp -105
|
||||
acc +14
|
||||
acc +40
|
||||
acc +0
|
||||
jmp -614
|
||||
acc +3
|
||||
acc +14
|
||||
jmp -357
|
||||
jmp -510
|
||||
jmp -416
|
||||
acc +12
|
||||
nop -245
|
||||
acc +26
|
||||
acc +15
|
||||
jmp +1
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/python3
|
||||
from pprint import pprint
|
||||
|
||||
prog = []
|
||||
acc = 0
|
||||
ip = 0
|
||||
with open("input") as fh:
|
||||
for ln in fh:
|
||||
op, arg = ln.split()
|
||||
prog.append((op, int(arg)))
|
||||
|
||||
pprint(prog)
|
||||
|
||||
seen = set()
|
||||
|
||||
while True:
|
||||
if ip in seen:
|
||||
print(acc)
|
||||
break;
|
||||
seen.add(ip)
|
||||
op = prog[ip][0]
|
||||
arg = prog[ip][1]
|
||||
print(acc, ip, op, arg)
|
||||
if op == "acc":
|
||||
acc += arg
|
||||
ip += 1
|
||||
elif op == "jmp":
|
||||
ip += arg
|
||||
elif op == "nop":
|
||||
ip += 1
|
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/python3
|
||||
from pprint import pprint
|
||||
|
||||
prog = []
|
||||
with open("input") as fh:
|
||||
for ln in fh:
|
||||
op, arg = ln.split()
|
||||
prog.append((op, int(arg)))
|
||||
|
||||
class InfiniteLoopError(Exception):
|
||||
pass
|
||||
|
||||
def run(prog):
|
||||
acc = 0
|
||||
ip = 0
|
||||
seen = set()
|
||||
|
||||
while True:
|
||||
if ip == len(prog):
|
||||
return acc
|
||||
if ip in seen:
|
||||
raise InfiniteLoopError(acc)
|
||||
seen.add(ip)
|
||||
op = prog[ip][0]
|
||||
arg = prog[ip][1]
|
||||
if op == "acc":
|
||||
acc += arg
|
||||
ip += 1
|
||||
elif op == "jmp":
|
||||
ip += arg
|
||||
elif op == "nop":
|
||||
ip += 1
|
||||
|
||||
def fixprog(prog):
|
||||
try:
|
||||
# first try original:
|
||||
acc = run(prog)
|
||||
print(acc)
|
||||
except InfiniteLoopError:
|
||||
print("infinite loop")
|
||||
for i in range(len(prog)):
|
||||
op = prog[i][0]
|
||||
if op not in ("jmp", "nop"):
|
||||
continue
|
||||
newop = "nop" if op == "jmp" else "jmp"
|
||||
fixedprog = list(prog)
|
||||
fixedprog[i] = (newop, prog[i][1])
|
||||
print("fixed", i, fixedprog[i])
|
||||
try:
|
||||
acc = run(fixedprog)
|
||||
print(acc)
|
||||
except InfiniteLoopError:
|
||||
print("infinite loop")
|
||||
|
||||
fixprog(prog)
|
Loading…
Reference in New Issue