Day 8
This commit is contained in:
parent
e0f9b8ada4
commit
5960b94a7a
3 changed files with 680 additions and 0 deletions
623
2020/8/data.txt
Normal file
623
2020/8/data.txt
Normal file
|
@ -0,0 +1,623 @@
|
|||
acc +37
|
||||
acc -4
|
||||
nop +405
|
||||
jmp +276
|
||||
acc +39
|
||||
acc +40
|
||||
acc -3
|
||||
jmp +231
|
||||
acc +44
|
||||
acc +12
|
||||
jmp +505
|
||||
acc +35
|
||||
jmp +282
|
||||
acc +23
|
||||
jmp +598
|
||||
nop +392
|
||||
acc +18
|
||||
acc +44
|
||||
acc +18
|
||||
jmp +297
|
||||
nop +460
|
||||
jmp +152
|
||||
nop +541
|
||||
acc +33
|
||||
jmp -11
|
||||
acc -5
|
||||
acc +9
|
||||
jmp +327
|
||||
acc +30
|
||||
acc -1
|
||||
acc -3
|
||||
jmp +50
|
||||
acc +22
|
||||
acc +18
|
||||
acc +33
|
||||
acc +37
|
||||
jmp +57
|
||||
acc -17
|
||||
acc -6
|
||||
acc -2
|
||||
jmp +535
|
||||
acc -15
|
||||
jmp +279
|
||||
acc +34
|
||||
acc +44
|
||||
acc +41
|
||||
jmp +349
|
||||
acc +2
|
||||
acc +6
|
||||
nop +351
|
||||
nop +252
|
||||
jmp +505
|
||||
jmp +1
|
||||
jmp +1
|
||||
nop +61
|
||||
jmp +524
|
||||
nop +351
|
||||
jmp +399
|
||||
acc +1
|
||||
nop +397
|
||||
acc +39
|
||||
nop +141
|
||||
jmp +134
|
||||
acc +46
|
||||
acc +14
|
||||
acc +26
|
||||
jmp +236
|
||||
acc +7
|
||||
acc -6
|
||||
acc +35
|
||||
jmp +397
|
||||
acc +15
|
||||
jmp +140
|
||||
acc +3
|
||||
acc -4
|
||||
acc +37
|
||||
acc +12
|
||||
jmp +86
|
||||
jmp +416
|
||||
jmp +1
|
||||
jmp +55
|
||||
acc -19
|
||||
jmp +536
|
||||
jmp +1
|
||||
acc -11
|
||||
acc +15
|
||||
jmp -61
|
||||
acc +25
|
||||
jmp -25
|
||||
acc +50
|
||||
acc +43
|
||||
jmp +1
|
||||
jmp +140
|
||||
acc +46
|
||||
nop -53
|
||||
acc +1
|
||||
nop +440
|
||||
jmp +488
|
||||
jmp +396
|
||||
nop +443
|
||||
acc +41
|
||||
jmp +168
|
||||
acc +25
|
||||
nop +383
|
||||
acc +12
|
||||
acc -19
|
||||
jmp +21
|
||||
acc +29
|
||||
acc +30
|
||||
jmp +497
|
||||
jmp +502
|
||||
jmp +417
|
||||
nop +351
|
||||
acc -15
|
||||
jmp +243
|
||||
acc +21
|
||||
acc +16
|
||||
jmp +332
|
||||
acc +28
|
||||
acc +22
|
||||
acc +38
|
||||
jmp +476
|
||||
acc +8
|
||||
acc -11
|
||||
jmp +458
|
||||
acc +9
|
||||
jmp +246
|
||||
acc +40
|
||||
acc +31
|
||||
acc +26
|
||||
jmp +218
|
||||
acc +27
|
||||
acc +9
|
||||
nop +347
|
||||
jmp +478
|
||||
nop +28
|
||||
nop +106
|
||||
acc +25
|
||||
acc -15
|
||||
jmp +397
|
||||
acc +31
|
||||
jmp +231
|
||||
acc -4
|
||||
nop +136
|
||||
acc +14
|
||||
jmp +181
|
||||
jmp +361
|
||||
acc +16
|
||||
acc +11
|
||||
jmp -108
|
||||
nop +299
|
||||
acc +21
|
||||
acc -2
|
||||
jmp -106
|
||||
jmp +246
|
||||
acc +31
|
||||
jmp +407
|
||||
jmp +377
|
||||
acc +43
|
||||
acc -12
|
||||
nop +142
|
||||
acc +8
|
||||
jmp -91
|
||||
jmp +1
|
||||
acc +34
|
||||
acc +5
|
||||
acc +31
|
||||
jmp +12
|
||||
acc +34
|
||||
acc +7
|
||||
acc +34
|
||||
acc +20
|
||||
jmp -45
|
||||
acc -11
|
||||
acc +41
|
||||
acc +10
|
||||
jmp +310
|
||||
nop -106
|
||||
jmp -36
|
||||
acc +23
|
||||
acc +46
|
||||
acc +46
|
||||
jmp +112
|
||||
acc +41
|
||||
nop +179
|
||||
acc +17
|
||||
nop +356
|
||||
jmp +147
|
||||
acc +42
|
||||
nop +49
|
||||
jmp +119
|
||||
acc +0
|
||||
acc +7
|
||||
acc -18
|
||||
acc -8
|
||||
jmp +11
|
||||
acc +12
|
||||
acc +38
|
||||
acc +39
|
||||
jmp +281
|
||||
nop +186
|
||||
jmp +162
|
||||
acc +44
|
||||
acc +20
|
||||
jmp +153
|
||||
jmp +395
|
||||
acc +49
|
||||
jmp +1
|
||||
acc +2
|
||||
jmp +1
|
||||
jmp -31
|
||||
jmp +301
|
||||
nop +97
|
||||
jmp -102
|
||||
jmp +262
|
||||
acc +28
|
||||
acc -15
|
||||
acc +44
|
||||
acc -13
|
||||
jmp +191
|
||||
jmp +281
|
||||
acc +36
|
||||
acc +1
|
||||
nop +15
|
||||
jmp +211
|
||||
acc +6
|
||||
acc -4
|
||||
jmp +42
|
||||
acc +34
|
||||
acc +0
|
||||
jmp +104
|
||||
jmp +311
|
||||
jmp +84
|
||||
acc +43
|
||||
acc -8
|
||||
acc -10
|
||||
acc +38
|
||||
jmp -90
|
||||
acc +49
|
||||
jmp +303
|
||||
nop +132
|
||||
jmp +301
|
||||
nop +60
|
||||
acc +37
|
||||
nop +96
|
||||
jmp +182
|
||||
acc +16
|
||||
acc +18
|
||||
nop +152
|
||||
acc +19
|
||||
jmp +325
|
||||
jmp -63
|
||||
acc +28
|
||||
jmp +56
|
||||
acc +18
|
||||
acc +29
|
||||
acc +33
|
||||
jmp -115
|
||||
acc +47
|
||||
acc +19
|
||||
jmp +1
|
||||
nop +41
|
||||
jmp +1
|
||||
jmp -207
|
||||
nop -62
|
||||
acc -9
|
||||
acc +42
|
||||
acc -12
|
||||
jmp -56
|
||||
acc +28
|
||||
jmp -163
|
||||
acc +25
|
||||
acc +17
|
||||
jmp -217
|
||||
acc +7
|
||||
jmp +272
|
||||
acc +43
|
||||
acc +22
|
||||
jmp +70
|
||||
acc -17
|
||||
jmp -117
|
||||
acc +24
|
||||
acc +26
|
||||
nop -275
|
||||
jmp -46
|
||||
nop +87
|
||||
acc +19
|
||||
acc +28
|
||||
jmp -34
|
||||
acc +4
|
||||
acc +9
|
||||
acc +6
|
||||
jmp +1
|
||||
jmp +28
|
||||
acc -6
|
||||
nop -67
|
||||
acc -10
|
||||
jmp +271
|
||||
acc +40
|
||||
acc +25
|
||||
acc -4
|
||||
jmp -63
|
||||
acc +46
|
||||
jmp +78
|
||||
acc +41
|
||||
nop -126
|
||||
nop +70
|
||||
jmp +1
|
||||
jmp +172
|
||||
nop +270
|
||||
jmp +30
|
||||
jmp +1
|
||||
acc +38
|
||||
nop +68
|
||||
acc +29
|
||||
jmp +253
|
||||
acc -18
|
||||
jmp -89
|
||||
acc +18
|
||||
acc +30
|
||||
jmp +147
|
||||
acc +24
|
||||
acc +11
|
||||
acc +50
|
||||
jmp -225
|
||||
jmp -210
|
||||
acc -18
|
||||
acc +1
|
||||
acc +38
|
||||
jmp +1
|
||||
jmp -79
|
||||
acc +45
|
||||
acc +12
|
||||
jmp +209
|
||||
jmp -207
|
||||
acc +32
|
||||
acc +4
|
||||
acc +32
|
||||
acc +14
|
||||
jmp +83
|
||||
acc +13
|
||||
acc +1
|
||||
acc +46
|
||||
acc +38
|
||||
jmp +28
|
||||
nop +153
|
||||
acc -17
|
||||
jmp -73
|
||||
acc +11
|
||||
jmp +248
|
||||
acc +29
|
||||
acc +45
|
||||
acc +16
|
||||
jmp +96
|
||||
jmp -273
|
||||
acc +34
|
||||
jmp +87
|
||||
nop +99
|
||||
acc -3
|
||||
jmp -74
|
||||
acc +12
|
||||
nop -119
|
||||
jmp -141
|
||||
acc -18
|
||||
nop -79
|
||||
acc +1
|
||||
acc +6
|
||||
jmp +9
|
||||
acc +3
|
||||
acc +44
|
||||
acc +39
|
||||
jmp -165
|
||||
acc +6
|
||||
jmp +44
|
||||
acc +25
|
||||
jmp -133
|
||||
acc +0
|
||||
jmp +14
|
||||
jmp +1
|
||||
acc +1
|
||||
jmp -223
|
||||
jmp +71
|
||||
nop -1
|
||||
acc +22
|
||||
acc +11
|
||||
jmp -274
|
||||
jmp -330
|
||||
acc +45
|
||||
jmp +1
|
||||
acc +15
|
||||
jmp -158
|
||||
jmp -128
|
||||
acc +50
|
||||
acc +26
|
||||
jmp -73
|
||||
nop +99
|
||||
jmp +71
|
||||
acc +35
|
||||
acc +7
|
||||
jmp +192
|
||||
acc +13
|
||||
jmp +190
|
||||
acc +4
|
||||
acc -1
|
||||
acc +40
|
||||
acc -15
|
||||
jmp +50
|
||||
acc +29
|
||||
jmp -337
|
||||
jmp -75
|
||||
acc +41
|
||||
jmp +1
|
||||
jmp -387
|
||||
acc +28
|
||||
acc +18
|
||||
acc +19
|
||||
jmp -62
|
||||
nop -196
|
||||
jmp -410
|
||||
jmp +1
|
||||
acc -17
|
||||
jmp -267
|
||||
acc +22
|
||||
jmp -301
|
||||
nop -98
|
||||
acc -15
|
||||
jmp -124
|
||||
acc +45
|
||||
acc -18
|
||||
acc +15
|
||||
acc +42
|
||||
jmp -296
|
||||
nop -10
|
||||
acc +29
|
||||
jmp -371
|
||||
acc +3
|
||||
jmp +1
|
||||
nop +61
|
||||
acc +5
|
||||
jmp -361
|
||||
acc -5
|
||||
nop -326
|
||||
jmp -379
|
||||
acc -10
|
||||
jmp +1
|
||||
acc +44
|
||||
jmp -231
|
||||
acc +3
|
||||
jmp -94
|
||||
acc +1
|
||||
jmp +113
|
||||
jmp -336
|
||||
acc +4
|
||||
jmp -299
|
||||
acc -13
|
||||
jmp +1
|
||||
acc +13
|
||||
jmp +143
|
||||
acc -11
|
||||
acc -19
|
||||
acc +18
|
||||
nop -390
|
||||
jmp -27
|
||||
acc +42
|
||||
jmp -232
|
||||
acc +15
|
||||
jmp -228
|
||||
acc +21
|
||||
acc +39
|
||||
acc +47
|
||||
acc +6
|
||||
jmp +57
|
||||
acc +28
|
||||
acc +27
|
||||
acc +50
|
||||
jmp -397
|
||||
acc +12
|
||||
jmp -445
|
||||
acc +30
|
||||
jmp -352
|
||||
acc -4
|
||||
acc +26
|
||||
acc +48
|
||||
jmp +1
|
||||
jmp -205
|
||||
jmp +22
|
||||
nop -284
|
||||
acc -1
|
||||
nop -361
|
||||
acc +0
|
||||
jmp -368
|
||||
acc -17
|
||||
nop -223
|
||||
jmp -41
|
||||
acc +4
|
||||
acc +46
|
||||
jmp +79
|
||||
jmp -370
|
||||
jmp -260
|
||||
acc +42
|
||||
jmp -14
|
||||
acc +30
|
||||
acc +50
|
||||
acc +13
|
||||
jmp -61
|
||||
acc +46
|
||||
jmp -63
|
||||
nop -55
|
||||
nop -320
|
||||
jmp -11
|
||||
acc +10
|
||||
jmp -424
|
||||
jmp -11
|
||||
acc +3
|
||||
jmp -71
|
||||
acc +42
|
||||
acc -13
|
||||
jmp +4
|
||||
nop -155
|
||||
nop -138
|
||||
jmp +62
|
||||
acc +11
|
||||
acc +19
|
||||
acc +15
|
||||
acc +17
|
||||
jmp -73
|
||||
acc -11
|
||||
jmp -273
|
||||
acc +8
|
||||
acc +6
|
||||
acc -7
|
||||
acc +41
|
||||
jmp -311
|
||||
jmp -111
|
||||
jmp -260
|
||||
jmp +50
|
||||
jmp -60
|
||||
jmp +1
|
||||
nop -89
|
||||
acc +36
|
||||
acc +14
|
||||
jmp -220
|
||||
nop -415
|
||||
acc +28
|
||||
jmp -402
|
||||
acc +41
|
||||
jmp -165
|
||||
acc +9
|
||||
acc -13
|
||||
acc -18
|
||||
acc +18
|
||||
jmp -504
|
||||
acc -9
|
||||
acc +29
|
||||
acc +44
|
||||
jmp -444
|
||||
acc +5
|
||||
acc +47
|
||||
jmp -545
|
||||
acc +23
|
||||
acc +7
|
||||
nop -240
|
||||
jmp -320
|
||||
jmp -141
|
||||
jmp +1
|
||||
acc +28
|
||||
nop -287
|
||||
jmp -118
|
||||
acc +44
|
||||
acc -7
|
||||
jmp -550
|
||||
acc +10
|
||||
acc +20
|
||||
acc -3
|
||||
jmp -401
|
||||
acc +45
|
||||
acc +36
|
||||
jmp -375
|
||||
jmp -485
|
||||
acc +9
|
||||
jmp -338
|
||||
jmp -510
|
||||
jmp -196
|
||||
acc -16
|
||||
jmp -372
|
||||
acc +0
|
||||
jmp -380
|
||||
acc -3
|
||||
nop -473
|
||||
nop -361
|
||||
jmp -311
|
||||
acc +0
|
||||
nop +20
|
||||
jmp -436
|
||||
acc +9
|
||||
jmp +1
|
||||
jmp -215
|
||||
acc +19
|
||||
jmp -451
|
||||
jmp -43
|
||||
acc -13
|
||||
acc -10
|
||||
acc -5
|
||||
jmp -208
|
||||
acc -11
|
||||
jmp -156
|
||||
acc +11
|
||||
acc -2
|
||||
nop -357
|
||||
jmp -73
|
||||
acc +21
|
||||
jmp -159
|
||||
acc +28
|
||||
acc -16
|
||||
acc +12
|
||||
acc +1
|
||||
jmp -282
|
||||
jmp -131
|
||||
acc -11
|
||||
acc +45
|
||||
acc +0
|
||||
acc +28
|
||||
jmp +1
|
48
2020/8/main.py
Normal file
48
2020/8/main.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
import copy
|
||||
|
||||
with open("data.txt", "r", encoding="utf-8") as f:
|
||||
prg = [x.rstrip().split(" ") for x in f]
|
||||
|
||||
def run(prg):
|
||||
acc = 0
|
||||
used_insts = set()
|
||||
i = 0
|
||||
l = len(prg)
|
||||
while i not in used_insts and i < l:
|
||||
used_insts.add(i)
|
||||
inst, val = prg[i]
|
||||
|
||||
if inst == "nop":
|
||||
pass
|
||||
elif inst == "acc":
|
||||
acc += int(val)
|
||||
elif inst == "jmp":
|
||||
i += int(val)
|
||||
continue
|
||||
|
||||
i += 1
|
||||
|
||||
return acc, i >= l
|
||||
|
||||
# Part 1
|
||||
acc, _ = run(prg)
|
||||
print(f"1: Accumulator is {acc}.")
|
||||
|
||||
# Part 2
|
||||
ok = False
|
||||
i = 0
|
||||
while not ok:
|
||||
aprg = copy.deepcopy(prg)
|
||||
for j in range(i, len(aprg) - 1):
|
||||
if aprg[j][0] == "nop":
|
||||
aprg[j][0] = "jmp"
|
||||
break
|
||||
elif aprg[j][0] == "jmp":
|
||||
aprg[j][0] = "nop"
|
||||
break
|
||||
|
||||
acc, ok = run(aprg)
|
||||
i += 1
|
||||
assert i <= len(aprg)
|
||||
|
||||
print(f"2: Accumulator is {acc}.")
|
9
2020/8/test.txt
Normal file
9
2020/8/test.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
nop +0
|
||||
acc +1
|
||||
jmp +4
|
||||
acc +3
|
||||
jmp -3
|
||||
acc -99
|
||||
acc +1
|
||||
jmp -4
|
||||
acc +6
|
Loading…
Reference in a new issue