From 2978d5399b2e6e04ae6d4525485464dc9192083e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Thu, 10 Dec 2020 09:40:34 +0100 Subject: no deepcopy day 8 --- 20/README | 2 +- 20/py/d08.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) (limited to '20') diff --git a/20/README b/20/README index 2d25a6b..629a35a 100644 --- a/20/README +++ b/20/README @@ -9,7 +9,7 @@ Day Time Ans Time Ans 5 1.660 959 1.708 527 6 1.346 6714 3.664 3435 7 2.884 139 2.681 58175 - 8 0.278 2025 274.072 2001 YIKES + 8 0.261 2025 5.063 2001 9 2.741 26796446 2.875 3353494 10 0.027 2046 0.161 1157018619904 ------- ------- diff --git a/20/py/d08.py b/20/py/d08.py index e825e89..46a2689 100644 --- a/20/py/d08.py +++ b/20/py/d08.py @@ -5,7 +5,7 @@ from copy import deepcopy def parse(prog): - return [[(l := line.strip().split())[0], int(l[1])] for line in prog] + return [((l := line.strip().split())[0], int(l[1])) for line in prog] def run(prog): @@ -32,19 +32,20 @@ def pt1(_in): def pt2(_in): - _in = parse(_in) - for i in range(len(_in)): - prog = deepcopy(_in) - inst, offset = prog[i] + prog = parse(_in) + for i in range(len(prog)): + orig = prog[i] + inst, offset = orig if inst == "jmp": - prog[i][0] = "nop" + prog[i] = ("nop", offset) elif inst == "nop": - prog[i][0] = "jmp" + prog[i] = ("jmp", offset) else: continue ret, acc = run(prog) if ret: return acc + prog[i] = orig if __name__ == "__main__": -- cgit v1.2.1