aboutsummaryrefslogtreecommitdiff
path: root/2022/20/solve.py
diff options
context:
space:
mode:
Diffstat (limited to '2022/20/solve.py')
-rw-r--r--2022/20/solve.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/2022/20/solve.py b/2022/20/solve.py
new file mode 100644
index 0000000..6a0a74f
--- /dev/null
+++ b/2022/20/solve.py
@@ -0,0 +1,32 @@
+import numpy as np
+
+data = [
+ (i, int(dat))
+ for i, dat in enumerate(open("input").readlines())
+ if dat != ""
+]
+size = len(data)
+
+
+def solve(arr, mult):
+ for coord in arr[:] * mult:
+ i = arr.index(coord)
+ arr.pop(i)
+ arr.insert((i + coord[1]) % (size - 1), coord)
+ zero = [coord[1] for coord in arr].index(0)
+ locs = [1000, 2000, 3000]
+ return sum(arr[(zero + p) % size][1] for p in locs)
+
+
+def part1():
+ copied = data[:] # don't overwrite because part2
+ return solve(copied, 1)
+
+
+def part2():
+ applied = [(i, dat * 811589153) for i, dat in data]
+ return solve(applied, 10)
+
+
+print(f"Part 1: {part1()}")
+print(f"Part 2: {part2()}")