diff options
Diffstat (limited to '20/py/d08.py')
| -rw-r--r-- | 20/py/d08.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/20/py/d08.py b/20/py/d08.py index f2aa572..081b7b2 100644 --- a/20/py/d08.py +++ b/20/py/d08.py @@ -2,6 +2,10 @@ import sys +def parse(prog): + return [[(l := line.strip().split())[0], int(l[1])] for line in prog] + + def run(prog): acc = 0 loc = 0 @@ -10,8 +14,7 @@ def run(prog): if loc in execed: return False, acc execed.add(loc) - inst, offset = prog[loc].strip().split() - offset = int(offset) + inst, offset = prog[loc] if inst == "acc": acc += offset loc += 1 @@ -29,11 +32,11 @@ def pt1(_in): def pt2(_in): for i in range(len(_in)): prog = _in.copy() - inst, offset = prog[i].strip().split() + inst, offset = prog[i] if inst == "jmp": - prog[i] = "nop 0" + prog[i][0] = "nop" elif inst == "nop": - prog[i] = f"jmp {offset}" + prog[i][0] = "jmp" else: continue ret, acc = run(prog) |
