From 58e288f2e90e47a5a073b1abe83d815261e4a7e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 9 Dec 2020 07:16:56 +0100 Subject: d8 convert to int once --- 20/py/d08.py | 13 ++++++++----- 1 file 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) -- cgit v1.2.1