summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-12-10 09:40:34 +0100
committerGustav Sörnäs <gustav@sornas.net>2020-12-10 09:40:55 +0100
commit2978d5399b2e6e04ae6d4525485464dc9192083e (patch)
treeaa7c104070c5a4ea154136e8f9e9ccc3c25c05f7
parentabf063fc5f113bd5fbf5ba2c4e8bf8ea591f57c1 (diff)
downloadaoc-2978d5399b2e6e04ae6d4525485464dc9192083e.tar.gz
no deepcopy day 8
-rw-r--r--20/README2
-rw-r--r--20/py/d08.py15
2 files changed, 9 insertions, 8 deletions
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__":