summaryrefslogtreecommitdiff
path: root/2022/day9/asd.py
diff options
context:
space:
mode:
authornekineki <nekineki@nekineki.net>2022-12-09 06:44:11 +0100
committernekineki <nekineki@nekineki.net>2022-12-09 06:45:43 +0100
commitcb49f5a518b6a03bff8aaee6fe992995c88e3092 (patch)
treeeb6e02822c93b1adac02140506d9b18ecb106cd6 /2022/day9/asd.py
parentfafea826733e745374f8c297e86c67001b7f1953 (diff)
day9
Diffstat (limited to '2022/day9/asd.py')
-rwxr-xr-x2022/day9/asd.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/2022/day9/asd.py b/2022/day9/asd.py
new file mode 100755
index 0000000..0065441
--- /dev/null
+++ b/2022/day9/asd.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+
+# import numpy as np
+from functools import reduce
+from re import findall
+from copy import deepcopy
+import sys
+
+# filename = "ref.txt"
+# filename = "ref2.txt"
+filename = "pzl.txt"
+data = open(filename).read()
+lines = [line for line in data.rstrip('\n').split('\n')]
+
+
+moves = []
+for a in lines:
+ m = [0, 0]
+ direction, count = a.split(' ')
+ if direction == 'R':
+ m = [1, 0]
+ elif direction == 'U':
+ m = [0, 1]
+ elif direction == 'D':
+ m = [0, -1]
+ elif direction == 'L':
+ m = [-1, 0]
+
+ # m = [int(count)*i for i in m]
+ for _ in range(int(count)):
+ moves.append(m)
+
+# print(moves)
+
+res1 = 0
+h = [0,0]
+t = [0,0]
+visited = set()
+visited.add(tuple(t))
+
+for m in moves:
+ h = [hi + mi for hi,mi in zip(h,m)]
+
+ dx = h[0] - t[0]
+ dy = h[1] - t[1]
+
+ if abs(dx) > 1 or (abs(dx) > 0 and abs(dy) > 1):
+ t[0] += dx//abs(dx)
+
+ if abs(dy) > 1 or (abs(dy) > 0 and abs(dx) > 1):
+ t[1] += dy//abs(dy)
+
+ visited.add(tuple(t))
+
+
+res2 = 0
+ht = [[0,0] for i in range(10)]
+visited9 = set()
+visited9.add(tuple(ht[9]))
+
+for m in moves:
+ ht[0] = [hi + mi for hi,mi in zip(ht[0],m)]
+
+ for i,_ in enumerate(ht):
+ if i == 0:
+ continue
+ dx = ht[i-1][0] - ht[i][0]
+ dy = ht[i-1][1] - ht[i][1]
+
+ if abs(dx) > 1 or (abs(dx) > 0 and abs(dy) > 1):
+ ht[i][0] += dx//abs(dx)
+
+ if abs(dy) > 1 or (abs(dy) > 0 and abs(dx) > 1):
+ ht[i][1] += dy//abs(dy)
+
+ # print(ht)
+ visited9.add(tuple(ht[9]))
+
+# print(visited9)
+
+res1 = len(visited)
+res2 = len(visited9)
+
+print('res1:', res1)
+print('res2:', res2)
+