add solution 8, parts 1 and 2
This commit is contained in:
parent
c273962081
commit
34d996c2c1
|
@ -0,0 +1,638 @@
|
|||
acc +8
|
||||
acc +37
|
||||
jmp +328
|
||||
jmp +574
|
||||
nop +321
|
||||
acc +17
|
||||
jmp +450
|
||||
acc +46
|
||||
acc -15
|
||||
nop -5
|
||||
acc +48
|
||||
jmp +358
|
||||
jmp +29
|
||||
acc +23
|
||||
jmp +11
|
||||
acc -14
|
||||
jmp +561
|
||||
acc +9
|
||||
acc +17
|
||||
jmp +136
|
||||
jmp +394
|
||||
acc +24
|
||||
acc +37
|
||||
acc +19
|
||||
jmp +241
|
||||
acc +38
|
||||
acc +44
|
||||
acc -5
|
||||
jmp -8
|
||||
acc +50
|
||||
acc -9
|
||||
acc +5
|
||||
jmp +424
|
||||
acc -15
|
||||
nop +93
|
||||
acc -1
|
||||
jmp +414
|
||||
jmp +548
|
||||
jmp +454
|
||||
acc +39
|
||||
jmp +490
|
||||
jmp +103
|
||||
jmp +214
|
||||
acc +37
|
||||
jmp +164
|
||||
acc +34
|
||||
jmp +362
|
||||
acc +24
|
||||
acc +32
|
||||
jmp +375
|
||||
jmp +500
|
||||
acc +23
|
||||
nop -1
|
||||
nop +463
|
||||
jmp +108
|
||||
acc +14
|
||||
jmp +106
|
||||
acc +20
|
||||
nop +298
|
||||
nop -39
|
||||
jmp +321
|
||||
jmp +1
|
||||
jmp +515
|
||||
nop +6
|
||||
acc +3
|
||||
acc +18
|
||||
acc -10
|
||||
jmp +353
|
||||
jmp -43
|
||||
jmp +1
|
||||
acc +0
|
||||
acc +7
|
||||
jmp +507
|
||||
nop +396
|
||||
jmp -62
|
||||
acc +30
|
||||
acc -13
|
||||
jmp +466
|
||||
jmp +137
|
||||
acc +6
|
||||
jmp +211
|
||||
acc +33
|
||||
acc +4
|
||||
jmp +269
|
||||
acc +50
|
||||
nop -65
|
||||
acc +18
|
||||
jmp -54
|
||||
jmp -68
|
||||
nop +38
|
||||
acc -6
|
||||
jmp +165
|
||||
nop +342
|
||||
acc +31
|
||||
acc +30
|
||||
nop +465
|
||||
jmp +273
|
||||
acc +35
|
||||
jmp +201
|
||||
acc +13
|
||||
acc +18
|
||||
acc +28
|
||||
acc +40
|
||||
jmp +244
|
||||
nop -63
|
||||
acc +25
|
||||
acc +16
|
||||
jmp -32
|
||||
acc -6
|
||||
acc +17
|
||||
jmp +298
|
||||
jmp +358
|
||||
acc +28
|
||||
jmp +1
|
||||
acc +27
|
||||
jmp +204
|
||||
jmp +4
|
||||
acc +17
|
||||
acc +47
|
||||
jmp +83
|
||||
acc -14
|
||||
jmp -42
|
||||
acc +0
|
||||
acc +14
|
||||
acc -9
|
||||
acc +13
|
||||
jmp +108
|
||||
acc +1
|
||||
acc -8
|
||||
acc +44
|
||||
jmp +420
|
||||
acc -1
|
||||
acc +24
|
||||
jmp +101
|
||||
acc -10
|
||||
nop +493
|
||||
nop +140
|
||||
acc -12
|
||||
jmp -134
|
||||
acc +21
|
||||
nop +385
|
||||
acc +38
|
||||
acc +4
|
||||
jmp +349
|
||||
jmp +225
|
||||
nop +432
|
||||
jmp +421
|
||||
acc +33
|
||||
acc +11
|
||||
jmp +462
|
||||
acc +21
|
||||
acc +11
|
||||
acc +5
|
||||
acc +15
|
||||
jmp +260
|
||||
nop +308
|
||||
acc -6
|
||||
acc -14
|
||||
acc -3
|
||||
jmp +178
|
||||
nop -33
|
||||
jmp +80
|
||||
acc +33
|
||||
acc -11
|
||||
acc +39
|
||||
jmp +145
|
||||
jmp +64
|
||||
acc +49
|
||||
acc +47
|
||||
acc +13
|
||||
jmp +331
|
||||
acc +1
|
||||
jmp -10
|
||||
acc +37
|
||||
nop +276
|
||||
jmp +259
|
||||
acc +16
|
||||
acc +38
|
||||
jmp +121
|
||||
acc +11
|
||||
nop +301
|
||||
acc +2
|
||||
jmp +94
|
||||
nop +186
|
||||
nop +255
|
||||
jmp -106
|
||||
nop -171
|
||||
acc +35
|
||||
acc -1
|
||||
acc +44
|
||||
jmp +129
|
||||
acc +27
|
||||
acc -6
|
||||
jmp -150
|
||||
acc +12
|
||||
acc +19
|
||||
acc +15
|
||||
jmp +247
|
||||
nop +309
|
||||
nop +429
|
||||
nop -131
|
||||
jmp +410
|
||||
jmp +187
|
||||
acc -4
|
||||
acc +45
|
||||
acc +3
|
||||
acc -16
|
||||
jmp -166
|
||||
acc +41
|
||||
jmp +276
|
||||
acc -2
|
||||
nop +23
|
||||
acc +11
|
||||
acc +19
|
||||
jmp +271
|
||||
acc +35
|
||||
jmp +136
|
||||
acc +46
|
||||
acc -9
|
||||
nop +189
|
||||
jmp +1
|
||||
jmp -201
|
||||
acc -11
|
||||
nop -190
|
||||
acc +9
|
||||
jmp +175
|
||||
acc +25
|
||||
acc +10
|
||||
acc -12
|
||||
jmp -50
|
||||
acc +44
|
||||
jmp +132
|
||||
acc -14
|
||||
jmp -71
|
||||
acc +47
|
||||
acc -9
|
||||
jmp -125
|
||||
jmp +1
|
||||
acc -5
|
||||
acc +47
|
||||
jmp +184
|
||||
nop -26
|
||||
jmp -48
|
||||
acc +24
|
||||
acc +33
|
||||
acc +38
|
||||
jmp +246
|
||||
acc +38
|
||||
nop -114
|
||||
nop +42
|
||||
nop +131
|
||||
jmp +256
|
||||
acc +48
|
||||
nop -126
|
||||
acc +20
|
||||
jmp +189
|
||||
acc +39
|
||||
nop +206
|
||||
acc +2
|
||||
acc +8
|
||||
jmp +279
|
||||
acc +31
|
||||
acc +8
|
||||
acc -14
|
||||
jmp +221
|
||||
acc -14
|
||||
acc +4
|
||||
jmp +161
|
||||
jmp +188
|
||||
acc +13
|
||||
acc +50
|
||||
acc -10
|
||||
acc +42
|
||||
jmp -169
|
||||
acc +25
|
||||
jmp +292
|
||||
acc +40
|
||||
jmp +53
|
||||
acc -1
|
||||
acc +29
|
||||
acc +20
|
||||
jmp -240
|
||||
jmp +4
|
||||
acc +28
|
||||
acc -9
|
||||
jmp -158
|
||||
jmp +305
|
||||
acc +47
|
||||
nop -250
|
||||
nop -155
|
||||
jmp +321
|
||||
acc +24
|
||||
acc +48
|
||||
acc +41
|
||||
acc -2
|
||||
jmp -61
|
||||
acc +40
|
||||
jmp +1
|
||||
jmp -209
|
||||
jmp +231
|
||||
acc +28
|
||||
acc +13
|
||||
jmp +45
|
||||
nop +147
|
||||
nop -35
|
||||
jmp -36
|
||||
acc +33
|
||||
acc +12
|
||||
acc +7
|
||||
jmp -62
|
||||
nop +1
|
||||
acc +3
|
||||
acc +18
|
||||
jmp +320
|
||||
acc +9
|
||||
acc -19
|
||||
acc -3
|
||||
acc +11
|
||||
jmp -151
|
||||
acc +11
|
||||
acc +31
|
||||
jmp -296
|
||||
acc -10
|
||||
acc +21
|
||||
jmp +104
|
||||
acc +46
|
||||
acc +22
|
||||
jmp +29
|
||||
jmp +1
|
||||
jmp +187
|
||||
acc -7
|
||||
acc +28
|
||||
acc +1
|
||||
acc +8
|
||||
jmp +74
|
||||
acc +45
|
||||
jmp +114
|
||||
acc +21
|
||||
nop -204
|
||||
jmp -327
|
||||
acc +5
|
||||
acc +36
|
||||
jmp -148
|
||||
jmp +285
|
||||
acc +2
|
||||
jmp +1
|
||||
jmp +197
|
||||
jmp +271
|
||||
nop +137
|
||||
nop +279
|
||||
acc +41
|
||||
jmp +1
|
||||
acc +43
|
||||
jmp +214
|
||||
nop -307
|
||||
jmp +245
|
||||
acc -13
|
||||
nop -210
|
||||
jmp +56
|
||||
acc -7
|
||||
acc +18
|
||||
acc +12
|
||||
jmp +88
|
||||
acc -18
|
||||
acc +32
|
||||
jmp +1
|
||||
jmp -199
|
||||
acc -9
|
||||
jmp -317
|
||||
acc -17
|
||||
acc +2
|
||||
nop +202
|
||||
acc +20
|
||||
jmp +227
|
||||
jmp -44
|
||||
jmp -28
|
||||
acc -9
|
||||
acc +12
|
||||
acc -10
|
||||
acc +3
|
||||
jmp -115
|
||||
acc +19
|
||||
acc +22
|
||||
jmp -340
|
||||
acc -7
|
||||
acc +7
|
||||
acc +32
|
||||
acc -11
|
||||
jmp -19
|
||||
acc +7
|
||||
jmp +1
|
||||
acc +14
|
||||
jmp -89
|
||||
acc +39
|
||||
jmp +75
|
||||
acc +32
|
||||
nop +215
|
||||
acc +40
|
||||
jmp +83
|
||||
jmp +204
|
||||
acc +1
|
||||
acc +29
|
||||
acc -2
|
||||
jmp +70
|
||||
acc -15
|
||||
acc -1
|
||||
nop -381
|
||||
jmp +27
|
||||
nop +65
|
||||
acc +40
|
||||
jmp -299
|
||||
acc +16
|
||||
acc +13
|
||||
jmp -24
|
||||
acc +26
|
||||
jmp -20
|
||||
acc +36
|
||||
acc +10
|
||||
nop -274
|
||||
jmp -394
|
||||
jmp +165
|
||||
acc +33
|
||||
acc -7
|
||||
jmp -419
|
||||
jmp -386
|
||||
nop -298
|
||||
nop -406
|
||||
jmp -108
|
||||
acc +10
|
||||
acc +46
|
||||
acc +0
|
||||
nop +50
|
||||
jmp -343
|
||||
jmp -5
|
||||
acc -8
|
||||
jmp -233
|
||||
acc +13
|
||||
acc +43
|
||||
jmp +87
|
||||
jmp +24
|
||||
acc +35
|
||||
nop -421
|
||||
acc +46
|
||||
jmp -35
|
||||
jmp -55
|
||||
acc +24
|
||||
acc +17
|
||||
acc -16
|
||||
acc +26
|
||||
jmp +128
|
||||
nop -11
|
||||
jmp +167
|
||||
acc +25
|
||||
acc +14
|
||||
nop -59
|
||||
jmp -108
|
||||
acc +50
|
||||
acc -18
|
||||
acc +45
|
||||
jmp -390
|
||||
acc -2
|
||||
acc +16
|
||||
jmp +123
|
||||
acc +41
|
||||
jmp -242
|
||||
nop -338
|
||||
acc -15
|
||||
acc +44
|
||||
jmp -227
|
||||
nop +159
|
||||
acc +10
|
||||
jmp -298
|
||||
jmp -338
|
||||
acc +10
|
||||
acc +9
|
||||
acc +24
|
||||
nop -173
|
||||
jmp -330
|
||||
nop -453
|
||||
acc +2
|
||||
jmp +1
|
||||
jmp -138
|
||||
acc +21
|
||||
acc +50
|
||||
jmp -451
|
||||
acc +19
|
||||
acc -7
|
||||
nop -454
|
||||
jmp +85
|
||||
acc -11
|
||||
acc +19
|
||||
jmp -394
|
||||
acc +27
|
||||
acc +4
|
||||
acc +42
|
||||
jmp -491
|
||||
acc +36
|
||||
acc +33
|
||||
acc -5
|
||||
acc +39
|
||||
jmp -425
|
||||
acc +46
|
||||
acc +10
|
||||
jmp -452
|
||||
acc -1
|
||||
acc +36
|
||||
jmp -339
|
||||
acc +26
|
||||
acc +24
|
||||
acc -8
|
||||
jmp -376
|
||||
acc +35
|
||||
jmp +1
|
||||
acc -4
|
||||
acc +24
|
||||
jmp -71
|
||||
acc +46
|
||||
acc -4
|
||||
acc -8
|
||||
jmp -289
|
||||
acc +11
|
||||
acc +32
|
||||
acc +32
|
||||
acc +26
|
||||
jmp -214
|
||||
acc +46
|
||||
nop -485
|
||||
acc +16
|
||||
jmp -287
|
||||
jmp -95
|
||||
acc +36
|
||||
nop -376
|
||||
acc -13
|
||||
jmp -406
|
||||
nop -278
|
||||
acc +22
|
||||
acc +21
|
||||
acc +33
|
||||
jmp -463
|
||||
jmp +11
|
||||
nop -346
|
||||
acc +33
|
||||
jmp -86
|
||||
acc -17
|
||||
nop -350
|
||||
nop +83
|
||||
jmp -299
|
||||
acc +31
|
||||
acc +28
|
||||
jmp -516
|
||||
acc -13
|
||||
acc +15
|
||||
acc -19
|
||||
jmp -338
|
||||
acc +21
|
||||
acc +10
|
||||
jmp -309
|
||||
jmp -473
|
||||
nop -150
|
||||
jmp +44
|
||||
acc +45
|
||||
acc +41
|
||||
acc +41
|
||||
nop -139
|
||||
jmp -448
|
||||
jmp +1
|
||||
jmp -103
|
||||
nop -433
|
||||
acc +1
|
||||
acc -1
|
||||
acc +0
|
||||
jmp -289
|
||||
jmp -531
|
||||
jmp -134
|
||||
acc +21
|
||||
acc +14
|
||||
jmp -51
|
||||
jmp -520
|
||||
jmp -275
|
||||
acc +6
|
||||
acc +42
|
||||
jmp -256
|
||||
acc +26
|
||||
acc +36
|
||||
jmp -17
|
||||
acc +11
|
||||
acc +32
|
||||
nop -244
|
||||
acc +42
|
||||
jmp -546
|
||||
jmp -565
|
||||
acc +31
|
||||
acc -12
|
||||
nop -496
|
||||
jmp -531
|
||||
acc +25
|
||||
nop -196
|
||||
acc -18
|
||||
acc +10
|
||||
jmp -22
|
||||
nop -231
|
||||
jmp -41
|
||||
jmp -555
|
||||
acc +37
|
||||
acc -14
|
||||
acc +43
|
||||
jmp -462
|
||||
acc -11
|
||||
acc +43
|
||||
acc +15
|
||||
jmp -229
|
||||
acc +0
|
||||
acc +20
|
||||
acc -18
|
||||
nop -3
|
||||
jmp -240
|
||||
acc +37
|
||||
jmp -520
|
||||
nop -424
|
||||
jmp +1
|
||||
jmp +1
|
||||
nop -158
|
||||
jmp -19
|
||||
acc +0
|
||||
nop -591
|
||||
acc +29
|
||||
nop -192
|
||||
jmp -24
|
||||
nop -55
|
||||
jmp -364
|
||||
acc +5
|
||||
acc +33
|
||||
jmp -176
|
||||
acc +25
|
||||
acc +6
|
||||
acc +21
|
||||
acc +16
|
||||
jmp +1
|
|
@ -0,0 +1,9 @@
|
|||
nop +0
|
||||
acc +1
|
||||
jmp +4
|
||||
acc +3
|
||||
jmp -3
|
||||
acc -99
|
||||
acc +1
|
||||
jmp -4
|
||||
acc +6
|
|
@ -0,0 +1,76 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
def uniqexists(l):
|
||||
exists = {}
|
||||
for i in l:
|
||||
try:
|
||||
exists[i] += 1
|
||||
except KeyError:
|
||||
exists[i] = 1
|
||||
for i in exists:
|
||||
if exists[i] > 1: return exists[i]
|
||||
|
||||
fd = open('input', 'r')
|
||||
o = [i.rstrip() for i in fd.readlines()]
|
||||
|
||||
def sol1():
|
||||
pc = 0
|
||||
acc = 0
|
||||
ins_hist = []
|
||||
ops = o
|
||||
while uniqexists(ins_hist) == None:
|
||||
split = ops[pc].split(' ')
|
||||
ins = split[0]
|
||||
arg = split[1]
|
||||
|
||||
ins_hist.append(pc)
|
||||
|
||||
if ins == "nop":
|
||||
pc += 1
|
||||
elif ins == "acc":
|
||||
pc += 1
|
||||
acc += int(arg)
|
||||
elif ins == "jmp":
|
||||
if int(arg) == 0: acc += 1
|
||||
pc += int(arg)
|
||||
print(acc)
|
||||
|
||||
def sol2():
|
||||
realops = o
|
||||
for i in range(len(realops)):
|
||||
ops = []
|
||||
for j in realops:
|
||||
ops.append(j)
|
||||
split = ops[i].split(' ')
|
||||
mod_ins = split[0]
|
||||
mod_arg = split[1]
|
||||
if mod_ins == "jmp":
|
||||
ops[i] = "{} {}".format("nop", mod_arg)
|
||||
elif mod_ins == "nop":
|
||||
ops[i] = "{} {}".format("jmp", mod_arg)
|
||||
|
||||
pc = 0
|
||||
acc = 0
|
||||
ins_hist = []
|
||||
try:
|
||||
while uniqexists(ins_hist) == None:
|
||||
split = ops[pc].split(' ')
|
||||
ins = split[0]
|
||||
arg = split[1]
|
||||
|
||||
ins_hist.append(pc)
|
||||
|
||||
if ins == "nop":
|
||||
pc += 1
|
||||
elif ins == "acc":
|
||||
pc += 1
|
||||
acc += int(arg)
|
||||
elif ins == "jmp":
|
||||
if int(arg) == 0: acc += 1
|
||||
pc += int(arg)
|
||||
except IndexError:
|
||||
print("-!- MACHINE HALT -!-")
|
||||
print(acc)
|
||||
|
||||
sol1()
|
||||
sol2()
|
Loading…
Reference in New Issue