mid-kid
4 years ago
3 changed files with 679 additions and 0 deletions
@ -0,0 +1,66 @@ |
|||
#!/usr/bin/env python3 |
|||
|
|||
from sys import argv |
|||
|
|||
p = [] |
|||
for x in open(argv[1]): |
|||
x = x.strip().split() |
|||
p.append((x[0], int(x[1]))) |
|||
|
|||
class Cpu: |
|||
def __init__(self, prog): |
|||
self.prog = prog |
|||
self.pc = 0 |
|||
self.a = 0 |
|||
return |
|||
|
|||
def i_nop(self, arg): |
|||
return |
|||
|
|||
def i_acc(self, arg): |
|||
self.a += arg |
|||
return |
|||
|
|||
def i_jmp(self, arg): |
|||
self.pc += arg - 1 |
|||
return |
|||
|
|||
def step(self): |
|||
if self.pc >= len(self.prog): |
|||
return False |
|||
i = self.prog[self.pc] |
|||
self.pc += 1 |
|||
instr = { |
|||
"nop": self.i_nop, |
|||
"acc": self.i_acc, |
|||
"jmp": self.i_jmp |
|||
} |
|||
instr[i[0]](*i[1:]) |
|||
return True |
|||
|
|||
def halts(p): |
|||
c = Cpu(p) |
|||
seen = set() |
|||
while True: |
|||
if c.pc in seen: |
|||
return (False, c.a) |
|||
seen.add(c.pc) |
|||
if not c.step(): |
|||
return (True, c.a) |
|||
print(halts(p)[1]) |
|||
|
|||
for i, ins in enumerate(p): |
|||
n = None |
|||
if ins[0] == "jmp": |
|||
n = p[i] |
|||
p[i] = ("nop", ins[1]) |
|||
elif ins[0] == "nop": |
|||
n = p[i] |
|||
p[i] = ("jmp", ins[1]) |
|||
else: |
|||
continue |
|||
a = halts(p) |
|||
if a[0]: |
|||
print(a[1]) |
|||
break |
|||
p[i] = n |
@ -0,0 +1,611 @@ |
|||
acc +22 |
|||
acc +42 |
|||
nop +456 |
|||
jmp +5 |
|||
acc +31 |
|||
acc +49 |
|||
acc +10 |
|||
jmp +519 |
|||
nop +390 |
|||
jmp +418 |
|||
nop +29 |
|||
acc -4 |
|||
jmp +156 |
|||
jmp +85 |
|||
acc +5 |
|||
acc +26 |
|||
jmp +497 |
|||
acc -6 |
|||
acc -18 |
|||
acc +20 |
|||
acc +4 |
|||
jmp -8 |
|||
jmp +372 |
|||
jmp +371 |
|||
jmp -1 |
|||
jmp +1 |
|||
nop +378 |
|||
acc +18 |
|||
jmp +388 |
|||
jmp +1 |
|||
acc +29 |
|||
acc +37 |
|||
jmp +1 |
|||
jmp +425 |
|||
acc +19 |
|||
acc +13 |
|||
jmp +477 |
|||
acc +7 |
|||
jmp +469 |
|||
nop +495 |
|||
nop +141 |
|||
acc +22 |
|||
jmp +517 |
|||
jmp +125 |
|||
nop +30 |
|||
acc +37 |
|||
acc +23 |
|||
nop +238 |
|||
jmp +110 |
|||
jmp +411 |
|||
acc +2 |
|||
acc -19 |
|||
acc -19 |
|||
jmp +296 |
|||
acc +0 |
|||
acc +14 |
|||
acc +20 |
|||
jmp +75 |
|||
nop +88 |
|||
acc -16 |
|||
acc +40 |
|||
acc +27 |
|||
jmp +131 |
|||
acc +33 |
|||
nop +252 |
|||
acc +5 |
|||
acc +0 |
|||
jmp +101 |
|||
nop +219 |
|||
acc +50 |
|||
acc +40 |
|||
jmp +49 |
|||
nop +74 |
|||
jmp +327 |
|||
acc +47 |
|||
jmp +206 |
|||
acc -15 |
|||
jmp +449 |
|||
acc -17 |
|||
acc -13 |
|||
acc +46 |
|||
jmp +417 |
|||
jmp +160 |
|||
acc -7 |
|||
acc -11 |
|||
acc +16 |
|||
acc +14 |
|||
jmp -37 |
|||
acc -12 |
|||
acc +15 |
|||
acc -14 |
|||
nop +110 |
|||
jmp +1 |
|||
acc -4 |
|||
nop +287 |
|||
nop -82 |
|||
jmp +30 |
|||
jmp +490 |
|||
acc +34 |
|||
jmp +305 |
|||
nop +90 |
|||
jmp +1 |
|||
nop -4 |
|||
nop -95 |
|||
jmp -46 |
|||
acc +26 |
|||
acc +13 |
|||
acc +47 |
|||
jmp +350 |
|||
acc +11 |
|||
jmp -102 |
|||
acc -2 |
|||
jmp +489 |
|||
acc +28 |
|||
acc +24 |
|||
nop +486 |
|||
jmp +485 |
|||
nop +170 |
|||
jmp +66 |
|||
jmp +411 |
|||
acc +30 |
|||
acc +48 |
|||
acc +48 |
|||
jmp -6 |
|||
acc +11 |
|||
jmp -51 |
|||
jmp +1 |
|||
jmp -10 |
|||
nop +411 |
|||
acc -17 |
|||
acc +32 |
|||
jmp +9 |
|||
jmp +398 |
|||
nop +82 |
|||
jmp +6 |
|||
acc +45 |
|||
acc +34 |
|||
jmp -44 |
|||
acc -13 |
|||
jmp -122 |
|||
acc +25 |
|||
nop +286 |
|||
acc +5 |
|||
jmp +144 |
|||
acc +0 |
|||
jmp -122 |
|||
acc -11 |
|||
acc -6 |
|||
jmp -123 |
|||
acc +16 |
|||
acc +1 |
|||
jmp -58 |
|||
nop +242 |
|||
acc -11 |
|||
jmp +257 |
|||
nop +231 |
|||
acc +46 |
|||
jmp +301 |
|||
acc -6 |
|||
acc +20 |
|||
acc -7 |
|||
jmp +365 |
|||
acc +32 |
|||
acc +0 |
|||
jmp -66 |
|||
jmp +110 |
|||
acc -18 |
|||
jmp +118 |
|||
acc +33 |
|||
nop -125 |
|||
acc +49 |
|||
acc +36 |
|||
jmp +188 |
|||
acc +9 |
|||
acc -11 |
|||
jmp +100 |
|||
acc +35 |
|||
jmp +55 |
|||
acc +38 |
|||
acc -1 |
|||
jmp +312 |
|||
jmp +157 |
|||
acc +17 |
|||
jmp +177 |
|||
nop -126 |
|||
acc +30 |
|||
acc -3 |
|||
jmp +211 |
|||
acc -3 |
|||
jmp -164 |
|||
jmp -112 |
|||
acc +50 |
|||
jmp +268 |
|||
nop +290 |
|||
acc -8 |
|||
acc +35 |
|||
jmp -44 |
|||
acc -6 |
|||
acc +11 |
|||
nop +327 |
|||
jmp +155 |
|||
acc +10 |
|||
acc +35 |
|||
nop +233 |
|||
jmp +330 |
|||
acc +31 |
|||
acc +8 |
|||
jmp +124 |
|||
acc -5 |
|||
jmp +300 |
|||
nop +171 |
|||
nop +4 |
|||
acc +19 |
|||
acc +41 |
|||
jmp -156 |
|||
nop +179 |
|||
acc +12 |
|||
jmp +160 |
|||
jmp -92 |
|||
acc -11 |
|||
acc -10 |
|||
jmp +95 |
|||
nop +94 |
|||
acc -8 |
|||
jmp -199 |
|||
acc +16 |
|||
acc +30 |
|||
nop +73 |
|||
acc +36 |
|||
jmp -53 |
|||
jmp +1 |
|||
jmp -6 |
|||
nop +369 |
|||
acc +29 |
|||
acc +47 |
|||
jmp +32 |
|||
acc +35 |
|||
jmp -61 |
|||
acc +41 |
|||
jmp +352 |
|||
acc -1 |
|||
jmp +75 |
|||
acc -10 |
|||
acc +28 |
|||
acc -15 |
|||
jmp -187 |
|||
acc +6 |
|||
jmp +1 |
|||
nop +112 |
|||
jmp +273 |
|||
nop +186 |
|||
acc +11 |
|||
acc +40 |
|||
jmp +128 |
|||
acc +17 |
|||
acc +23 |
|||
acc -8 |
|||
nop +277 |
|||
jmp +42 |
|||
acc +11 |
|||
nop -237 |
|||
acc +36 |
|||
acc +32 |
|||
jmp +287 |
|||
acc +16 |
|||
acc -19 |
|||
jmp +115 |
|||
acc -6 |
|||
acc +16 |
|||
nop -2 |
|||
acc +23 |
|||
jmp -160 |
|||
acc -10 |
|||
acc -10 |
|||
jmp +26 |
|||
acc -7 |
|||
jmp -95 |
|||
nop -160 |
|||
acc -2 |
|||
acc +44 |
|||
jmp -236 |
|||
jmp -198 |
|||
jmp +1 |
|||
acc +1 |
|||
jmp -9 |
|||
jmp -95 |
|||
jmp +273 |
|||
acc -19 |
|||
jmp -46 |
|||
acc +12 |
|||
acc +2 |
|||
jmp -145 |
|||
acc -14 |
|||
acc +3 |
|||
acc +3 |
|||
jmp +250 |
|||
acc +4 |
|||
acc +40 |
|||
jmp +1 |
|||
jmp +17 |
|||
acc +6 |
|||
acc +47 |
|||
jmp -77 |
|||
nop -192 |
|||
acc +11 |
|||
jmp +296 |
|||
acc -14 |
|||
jmp +64 |
|||
acc +35 |
|||
jmp +134 |
|||
acc -8 |
|||
nop +228 |
|||
acc +24 |
|||
acc +15 |
|||
jmp -64 |
|||
jmp -241 |
|||
acc +19 |
|||
acc +22 |
|||
acc +49 |
|||
nop -193 |
|||
jmp +219 |
|||
acc -1 |
|||
acc -11 |
|||
nop +211 |
|||
acc +0 |
|||
jmp -106 |
|||
nop +101 |
|||
jmp -222 |
|||
acc +20 |
|||
acc +45 |
|||
jmp +70 |
|||
acc +19 |
|||
acc +21 |
|||
jmp -23 |
|||
acc +8 |
|||
nop +92 |
|||
acc +47 |
|||
jmp -144 |
|||
acc +0 |
|||
acc -1 |
|||
jmp -81 |
|||
acc +23 |
|||
jmp -274 |
|||
acc +14 |
|||
acc +26 |
|||
acc +9 |
|||
jmp +79 |
|||
acc +22 |
|||
jmp -331 |
|||
acc -10 |
|||
jmp -311 |
|||
acc +16 |
|||
acc +30 |
|||
acc -8 |
|||
jmp +176 |
|||
acc -19 |
|||
acc +43 |
|||
jmp -222 |
|||
nop -116 |
|||
jmp +18 |
|||
acc +26 |
|||
acc +23 |
|||
acc +6 |
|||
jmp -162 |
|||
acc +34 |
|||
jmp +95 |
|||
acc +27 |
|||
acc +40 |
|||
acc +9 |
|||
jmp -77 |
|||
jmp +137 |
|||
acc -13 |
|||
acc +21 |
|||
acc +17 |
|||
acc -5 |
|||
jmp +91 |
|||
jmp -95 |
|||
acc +18 |
|||
acc -1 |
|||
jmp +70 |
|||
jmp -355 |
|||
nop -166 |
|||
acc -19 |
|||
acc +16 |
|||
jmp -146 |
|||
jmp -135 |
|||
jmp +57 |
|||
acc +45 |
|||
jmp -62 |
|||
acc -14 |
|||
jmp -382 |
|||
nop -172 |
|||
acc +45 |
|||
jmp -77 |
|||
acc +13 |
|||
jmp +65 |
|||
acc -4 |
|||
jmp +112 |
|||
jmp +107 |
|||
jmp +26 |
|||
jmp -326 |
|||
acc +25 |
|||
jmp +1 |
|||
jmp +179 |
|||
acc +33 |
|||
acc +2 |
|||
jmp -222 |
|||
nop +36 |
|||
acc +25 |
|||
nop -244 |
|||
jmp -376 |
|||
jmp -203 |
|||
acc +26 |
|||
nop +109 |
|||
acc +38 |
|||
jmp +135 |
|||
acc +7 |
|||
acc +40 |
|||
acc -18 |
|||
jmp -113 |
|||
nop -294 |
|||
acc +0 |
|||
acc +40 |
|||
nop -265 |
|||
jmp +81 |
|||
jmp -99 |
|||
jmp +32 |
|||
acc -17 |
|||
acc +25 |
|||
acc -12 |
|||
acc +26 |
|||
jmp -125 |
|||
acc -3 |
|||
acc -7 |
|||
acc +25 |
|||
jmp -410 |
|||
acc +47 |
|||
acc +36 |
|||
jmp +35 |
|||
acc +2 |
|||
acc +18 |
|||
acc -3 |
|||
jmp -38 |
|||
acc +29 |
|||
acc +49 |
|||
jmp -299 |
|||
acc -4 |
|||
nop -422 |
|||
jmp +50 |
|||
acc +11 |
|||
acc +2 |
|||
acc +49 |
|||
jmp -233 |
|||
acc +12 |
|||
acc +43 |
|||
acc -19 |
|||
acc +11 |
|||
jmp -264 |
|||
jmp +124 |
|||
jmp -361 |
|||
acc +35 |
|||
jmp -118 |
|||
acc +23 |
|||
acc -16 |
|||
acc -14 |
|||
jmp -22 |
|||
jmp -135 |
|||
jmp -309 |
|||
acc +6 |
|||
jmp -44 |
|||
acc -12 |
|||
acc +0 |
|||
jmp -23 |
|||
acc +29 |
|||
acc -8 |
|||
acc +18 |
|||
acc +35 |
|||
jmp -111 |
|||
acc +22 |
|||
acc +23 |
|||
acc +0 |
|||
acc -8 |
|||
jmp -55 |
|||
acc +14 |
|||
jmp +1 |
|||
acc +44 |
|||
acc +17 |
|||
jmp -272 |
|||
acc +39 |
|||
nop +37 |
|||
acc -19 |
|||
jmp -323 |
|||
acc +24 |
|||
acc +28 |
|||
acc +29 |
|||
acc +37 |
|||
jmp +110 |
|||
jmp -386 |
|||
nop -352 |
|||
acc +23 |
|||
acc +38 |
|||
jmp -369 |
|||
acc -5 |
|||
acc -14 |
|||
jmp +83 |
|||
jmp +17 |
|||
jmp -151 |
|||
jmp -118 |
|||
jmp -104 |
|||
jmp -341 |
|||
acc +32 |
|||
acc +43 |
|||
jmp -52 |
|||
acc -4 |
|||
acc +42 |
|||
acc +5 |
|||
jmp -116 |
|||
acc +13 |
|||
jmp +1 |
|||
nop -361 |
|||
acc +41 |
|||
jmp -386 |
|||
jmp -241 |
|||
nop -449 |
|||
acc +46 |
|||
jmp -176 |
|||
acc +6 |
|||
jmp +60 |
|||
jmp +1 |
|||
jmp -3 |
|||
jmp -62 |
|||
acc -14 |
|||
acc +17 |
|||
jmp -340 |
|||
acc +31 |
|||
acc -13 |
|||
acc +7 |
|||
jmp -54 |
|||
jmp -80 |
|||
acc +14 |
|||
acc +49 |
|||
acc +34 |
|||
jmp +24 |
|||
acc +11 |
|||
jmp -158 |
|||
acc -13 |
|||
jmp -261 |
|||
acc +33 |
|||
nop -171 |
|||
jmp -106 |
|||
acc +0 |
|||
acc +9 |
|||
acc +16 |
|||
acc +34 |
|||
jmp +18 |
|||
acc -2 |
|||
acc +47 |
|||
acc +39 |
|||
jmp -232 |
|||
acc +23 |
|||
nop -229 |
|||
acc +30 |
|||
acc +32 |
|||
jmp -147 |
|||
acc -8 |
|||
jmp -460 |
|||
jmp -498 |
|||
nop -218 |
|||
acc +31 |
|||
acc +44 |
|||
acc +30 |
|||
jmp -105 |
|||
acc +8 |
|||
acc -19 |
|||
acc +45 |
|||
nop -49 |
|||
jmp -140 |
|||
nop -43 |
|||
acc +42 |
|||
jmp +1 |
|||
acc -14 |
|||
jmp -42 |
|||
jmp -389 |
|||
acc +39 |
|||
acc +26 |
|||
acc +38 |
|||
jmp -77 |
|||
acc +48 |
|||
jmp -83 |
|||
acc +5 |
|||
jmp -81 |
|||
nop -242 |
|||
acc +35 |
|||
acc +0 |
|||
acc +19 |
|||
jmp -430 |
|||
acc +11 |
|||
nop -226 |
|||
acc +13 |
|||
acc +23 |
|||
jmp -575 |
|||
acc +44 |
|||
acc +50 |
|||
nop -303 |
|||
jmp -112 |
|||
jmp -305 |
|||
acc +23 |
|||
acc -11 |
|||
nop -376 |
|||
acc +50 |
|||
jmp +1 |
@ -0,0 +1,2 @@ |
|||
1782 |
|||
797 |
Loading…
Reference in new issue