summaryrefslogtreecommitdiff
path: root/2022
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
parentfafea826733e745374f8c297e86c67001b7f1953 (diff)
day9
Diffstat (limited to '2022')
-rwxr-xr-x2022/day9/asd.py86
-rw-r--r--2022/day9/pzl.txt2000
-rw-r--r--2022/day9/ref.txt8
-rw-r--r--2022/day9/ref2.txt8
4 files changed, 2102 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)
+
diff --git a/2022/day9/pzl.txt b/2022/day9/pzl.txt
new file mode 100644
index 0000000..b87df75
--- /dev/null
+++ b/2022/day9/pzl.txt
@@ -0,0 +1,2000 @@
+U 1
+D 2
+U 1
+L 1
+R 1
+L 1
+D 1
+L 2
+U 2
+L 2
+D 2
+L 2
+D 2
+L 1
+R 1
+D 1
+U 1
+D 1
+R 1
+U 2
+D 2
+R 2
+L 2
+R 2
+D 2
+L 2
+D 2
+R 1
+L 2
+D 2
+R 2
+D 1
+R 1
+L 1
+D 1
+U 1
+L 2
+D 2
+R 1
+L 2
+R 1
+U 1
+R 1
+L 1
+R 2
+D 1
+U 1
+D 1
+R 1
+U 2
+R 2
+D 1
+R 2
+D 1
+U 1
+D 1
+R 2
+U 2
+D 1
+U 2
+D 1
+L 1
+D 1
+U 2
+R 1
+L 1
+R 1
+D 2
+U 1
+D 2
+L 1
+R 2
+U 2
+R 1
+D 1
+R 1
+U 1
+R 1
+U 2
+R 2
+L 1
+U 1
+D 2
+U 1
+D 2
+L 2
+D 1
+U 2
+L 1
+U 1
+D 1
+U 1
+L 1
+D 2
+L 2
+R 1
+D 1
+L 2
+D 2
+R 2
+L 1
+D 1
+L 2
+U 2
+L 1
+R 2
+U 1
+D 1
+L 1
+U 2
+L 1
+D 1
+U 3
+D 3
+L 3
+U 2
+R 1
+U 2
+R 1
+U 2
+L 2
+U 3
+R 2
+L 1
+U 1
+D 3
+R 3
+U 1
+D 3
+L 2
+R 1
+L 1
+U 3
+R 3
+D 3
+U 2
+L 3
+D 3
+U 1
+L 1
+U 2
+D 1
+L 3
+D 3
+R 3
+U 1
+L 2
+R 1
+L 3
+U 2
+D 2
+R 3
+D 3
+L 1
+R 2
+D 1
+L 3
+U 1
+D 3
+U 3
+D 1
+U 1
+R 1
+U 2
+L 1
+D 3
+R 3
+D 1
+U 2
+D 2
+L 3
+D 3
+U 1
+D 2
+R 2
+L 1
+D 3
+L 1
+U 2
+L 2
+D 1
+L 3
+R 1
+L 1
+R 3
+U 1
+L 3
+R 2
+L 1
+D 1
+R 3
+D 1
+R 1
+D 1
+L 3
+D 1
+U 2
+R 3
+D 1
+U 1
+R 2
+U 1
+R 3
+L 3
+U 3
+D 2
+R 3
+L 1
+D 2
+R 2
+L 2
+U 1
+L 3
+R 2
+L 2
+U 3
+L 1
+D 1
+U 2
+R 1
+U 3
+R 2
+D 3
+L 3
+U 4
+D 4
+R 3
+L 3
+R 3
+U 2
+R 3
+L 4
+R 2
+U 1
+R 3
+U 3
+R 4
+U 2
+D 3
+L 3
+D 4
+U 3
+D 4
+U 3
+D 2
+R 2
+D 1
+R 4
+U 2
+D 4
+L 3
+D 4
+U 1
+L 2
+R 1
+L 3
+R 1
+L 3
+U 3
+D 3
+U 4
+L 2
+D 4
+L 4
+U 4
+L 3
+D 1
+R 2
+U 4
+R 2
+L 1
+R 3
+D 2
+L 3
+U 2
+R 1
+U 1
+D 3
+L 4
+D 3
+L 3
+D 3
+U 4
+D 3
+R 4
+L 1
+U 2
+R 4
+D 2
+U 3
+L 4
+R 2
+L 1
+D 4
+U 3
+R 2
+L 2
+R 4
+L 4
+D 1
+L 3
+D 4
+L 3
+U 2
+R 2
+D 4
+R 2
+U 2
+D 1
+U 4
+D 2
+R 4
+D 1
+U 1
+D 1
+R 1
+L 1
+R 2
+U 4
+R 4
+D 3
+R 4
+L 1
+D 2
+U 1
+L 3
+U 4
+R 3
+D 4
+L 1
+D 1
+L 4
+D 3
+R 1
+D 4
+L 3
+R 2
+D 3
+L 2
+D 4
+U 2
+L 2
+D 4
+L 2
+U 5
+R 3
+D 2
+U 5
+R 3
+L 3
+R 1
+D 4
+R 1
+D 3
+U 3
+R 2
+D 5
+U 4
+L 1
+D 1
+R 5
+D 5
+U 1
+L 3
+D 2
+L 4
+U 3
+L 2
+U 1
+R 1
+U 2
+D 5
+L 1
+R 4
+L 1
+U 3
+L 5
+U 2
+L 1
+R 1
+L 1
+R 1
+U 5
+D 5
+R 2
+D 4
+L 1
+R 4
+L 3
+U 5
+L 4
+U 3
+R 5
+D 1
+L 3
+R 1
+U 5
+R 2
+L 4
+U 1
+L 2
+U 5
+L 3
+U 1
+R 3
+D 4
+U 1
+R 5
+L 5
+R 1
+D 1
+R 5
+U 1
+R 2
+L 5
+R 2
+L 2
+R 1
+U 5
+D 2
+L 2
+R 4
+L 3
+U 5
+R 2
+L 3
+R 2
+D 1
+R 5
+L 4
+D 2
+U 1
+R 4
+D 3
+R 4
+D 2
+R 2
+D 5
+L 3
+D 1
+U 2
+L 1
+U 5
+D 4
+U 2
+R 5
+U 3
+D 4
+R 2
+U 2
+R 4
+D 6
+L 6
+D 1
+U 2
+D 4
+R 3
+D 6
+R 4
+L 6
+R 4
+D 2
+U 4
+D 3
+U 2
+L 4
+R 6
+U 5
+R 3
+U 1
+L 3
+D 2
+R 5
+D 4
+U 6
+D 4
+R 2
+U 6
+D 6
+U 5
+R 1
+U 4
+R 5
+L 6
+U 2
+D 2
+R 5
+U 3
+L 3
+U 2
+D 4
+L 5
+R 2
+D 5
+L 3
+U 4
+D 3
+U 5
+L 2
+U 3
+L 2
+U 3
+L 3
+U 1
+L 2
+U 1
+L 6
+D 1
+R 4
+D 4
+L 4
+U 4
+D 4
+R 2
+D 1
+U 1
+R 4
+D 2
+R 4
+L 6
+R 5
+U 2
+R 2
+U 1
+R 6
+L 1
+U 6
+R 5
+D 4
+L 2
+U 4
+R 3
+D 5
+L 5
+D 2
+R 6
+U 5
+R 3
+D 1
+L 2
+D 1
+R 4
+L 5
+U 6
+R 4
+D 3
+U 3
+R 1
+D 3
+U 2
+L 1
+U 1
+R 5
+L 4
+D 1
+R 2
+U 1
+L 3
+R 5
+D 5
+U 5
+L 1
+U 2
+R 7
+D 5
+L 7
+D 2
+R 7
+L 2
+D 6
+U 1
+L 5
+U 5
+D 2
+R 4
+U 3
+L 7
+R 5
+L 3
+D 6
+U 2
+D 5
+L 3
+R 4
+U 6
+D 5
+L 5
+U 2
+D 5
+R 4
+U 2
+L 2
+D 5
+U 2
+R 5
+L 4
+R 5
+U 6
+D 3
+U 7
+L 6
+D 4
+U 2
+R 7
+L 5
+D 5
+R 6
+L 1
+D 2
+L 2
+R 2
+U 3
+R 7
+D 1
+U 3
+R 2
+U 3
+R 5
+U 3
+L 7
+D 6
+L 7
+D 5
+L 5
+R 5
+U 2
+L 4
+U 7
+L 2
+D 7
+U 5
+L 4
+R 4
+L 2
+U 5
+L 4
+D 5
+R 7
+U 2
+L 1
+D 6
+R 1
+U 6
+D 1
+L 7
+U 3
+D 2
+L 3
+U 4
+R 4
+L 5
+U 7
+L 1
+D 5
+L 7
+D 1
+R 6
+L 1
+R 5
+L 3
+U 5
+D 2
+U 6
+D 4
+U 1
+R 2
+D 8
+R 8
+D 1
+R 4
+D 6
+L 8
+R 5
+D 5
+R 6
+D 5
+U 1
+L 1
+D 2
+L 4
+R 1
+D 1
+R 7
+L 8
+U 1
+D 8
+U 6
+L 7
+R 4
+U 1
+L 2
+U 1
+L 7
+D 2
+R 8
+L 1
+U 8
+R 8
+D 6
+U 2
+L 8
+D 7
+U 4
+R 8
+L 7
+U 6
+D 6
+U 2
+L 4
+D 3
+L 2
+D 3
+R 7
+U 3
+L 3
+U 3
+D 8
+L 2
+D 3
+L 1
+R 2
+U 8
+L 4
+D 7
+L 8
+R 3
+L 7
+U 2
+R 8
+D 3
+R 7
+U 3
+L 8
+U 5
+D 5
+U 5
+D 8
+U 8
+D 2
+L 4
+U 3
+D 2
+R 6
+U 3
+R 2
+U 4
+R 2
+L 6
+U 7
+R 6
+L 5
+D 6
+L 8
+U 5
+R 3
+L 5
+U 7
+D 7
+L 1
+U 6
+R 7
+D 3
+R 2
+L 7
+R 6
+D 7
+U 4
+D 2
+L 2
+U 3
+R 1
+U 5
+R 6
+D 2
+R 8
+U 7
+L 7
+U 8
+L 4
+R 9
+U 7
+D 6
+L 6
+R 4
+D 9
+L 1
+D 5
+U 2
+L 3
+R 9
+D 2
+U 1
+R 4
+L 8
+R 1
+L 1
+U 4
+R 4
+U 4
+R 3
+D 2
+U 5
+R 8
+D 1
+U 5
+L 4
+D 5
+U 3
+L 1
+D 4
+L 3
+U 8
+R 3
+L 3
+R 9
+U 3
+D 1
+R 4
+U 2
+L 8
+R 7
+L 4
+R 4
+L 7
+U 6
+L 2
+U 9
+R 7
+D 6
+U 5
+L 9
+U 7
+L 5
+D 1
+U 8
+R 4
+D 1
+L 8
+D 8
+L 7
+R 1
+L 7
+R 3
+U 2
+R 5
+D 1
+U 9
+R 1
+L 5
+U 5
+R 6
+L 4
+D 3
+R 9
+D 7
+R 3
+D 2
+R 6
+U 2
+D 5
+L 7
+U 1
+D 8
+R 2
+D 3
+R 3
+L 6
+R 2
+L 7
+D 8
+R 6
+D 6
+R 9
+U 6
+R 9
+D 3
+R 8
+U 7
+L 5
+D 2
+R 5
+U 6
+R 7
+D 7
+U 6
+L 2
+U 6
+R 4
+D 2
+L 9
+U 2
+L 9
+U 9
+R 8
+D 1
+U 9
+R 7
+U 5
+L 3
+D 5
+U 9
+L 2
+R 1
+U 3
+D 4
+L 1
+R 10
+D 9
+U 3
+R 6
+L 1
+D 5
+U 1
+D 10
+U 6
+L 3
+U 7
+D 10
+L 2
+U 10
+D 5
+R 1
+L 1
+R 3
+L 7
+D 4
+L 7
+D 10
+R 8
+L 7
+U 2
+R 6
+U 3
+L 6
+D 4
+R 8
+D 3
+R 8
+D 10
+L 3
+D 5
+L 5
+R 10
+U 6
+L 10
+R 1
+L 7
+D 3
+U 2
+D 6
+R 3
+D 6
+L 4
+R 10
+U 8
+D 4
+L 8
+U 7
+D 3
+L 3
+D 2
+R 8
+U 9
+L 1
+U 8
+D 8
+R 4
+U 9
+D 3
+R 10
+U 3
+L 4
+R 5
+U 3
+R 7
+D 9
+R 4
+U 9
+D 5
+R 8
+L 9
+U 1
+L 8
+R 4
+D 1
+L 4
+D 6
+U 5
+L 4
+R 9
+U 2
+D 7
+R 1
+L 1
+R 7
+D 6
+L 10
+R 10
+D 4
+R 11
+L 8
+U 9
+L 6
+R 4
+U 3
+L 1
+D 7
+L 8
+D 6
+L 3
+R 5
+U 1
+D 9
+U 3
+D 4
+U 11
+D 2
+U 1
+L 4
+R 11
+L 9
+R 6
+U 6
+L 4
+U 11
+L 4
+R 5
+L 10
+R 6
+U 8
+R 8
+L 4
+D 11
+L 11
+R 2
+U 9
+R 6
+D 8
+U 6
+L 1
+R 11
+L 1
+R 1
+D 7
+L 2
+U 11
+D 7
+L 9
+R 7
+U 2
+R 5
+D 10
+R 4
+D 4
+U 2
+R 7
+U 9
+L 10
+U 11
+L 3
+R 10
+D 9
+L 6
+U 10
+L 7
+R 11
+U 5
+D 11
+R 8
+D 1
+U 7
+R 2
+U 8
+D 4
+R 6
+D 4
+U 6
+R 6
+L 7
+U 5
+R 4
+U 5
+R 3
+L 2
+R 5
+D 8
+L 11
+U 2
+R 8
+L 4
+U 11
+R 2
+D 8
+L 3
+D 2
+R 10
+L 2
+R 2
+L 8
+D 8
+L 8
+R 1
+L 1
+U 9
+D 7
+U 6
+R 2
+L 9
+U 11
+D 3
+R 10
+U 5
+R 5
+L 4
+R 10
+L 6
+U 10
+R 2
+U 2
+L 7
+R 10
+L 2
+U 3
+L 9
+U 6
+L 12
+R 8
+U 3
+R 10
+U 12
+L 6
+U 11
+R 2
+D 5
+R 12
+D 10
+R 9
+L 5
+R 9
+L 6
+R 3
+U 4
+R 6
+U 8
+L 3
+U 10
+R 5
+L 3
+U 6
+R 4
+U 10
+R 8
+D 8
+R 3
+L 5
+U 4
+D 9
+U 12
+D 10
+L 10
+R 3
+D 4
+R 2
+D 6
+L 2
+R 3
+L 10
+U 3
+D 6
+L 8
+R 9
+D 4
+L 3
+U 10
+L 11
+R 5
+U 11
+R 11
+D 11
+L 6
+R 5
+D 6
+R 4
+U 9
+R 11
+D 2
+U 9
+L 1
+R 12
+D 8
+R 11
+D 4
+R 3
+U 10
+D 5
+U 9
+R 10
+L 4
+R 9
+L 10
+D 7
+R 8
+L 8
+R 11
+L 3
+U 4
+D 10
+R 2
+L 2
+U 1
+L 12
+U 9
+R 2
+D 7
+R 2
+L 6
+D 8
+L 3
+U 7
+R 6
+D 6
+L 6
+R 5
+L 12
+D 13
+U 9
+L 1
+R 11
+D 4
+U 10
+D 7
+L 8
+U 13
+L 12
+R 3
+L 2
+D 1
+U 4
+D 9
+R 9
+L 12
+D 13
+U 9
+R 8
+L 3
+U 2
+L 1
+U 12
+D 12
+U 5
+L 5
+U 10
+R 3
+D 8
+R 10
+L 9
+R 1
+U 4
+D 12
+R 11
+U 8
+L 9
+U 10
+R 8
+U 13
+D 13
+U 10
+D 5
+R 6
+U 11
+R 4
+U 6
+L 2
+U 13
+L 2
+U 8
+R 13
+U 4
+D 5
+U 3
+R 8
+U 8
+L 6
+U 11
+R 10
+U 8
+D 8
+L 10
+D 9
+U 13
+R 12
+L 10
+R 3
+U 3
+D 10
+R 3
+D 3
+L 6
+R 3
+U 5
+L 3
+R 10
+D 6
+L 10
+D 10
+R 13
+D 1
+R 9
+L 7
+D 12
+U 6
+R 4
+L 1
+U 7
+L 8
+U 7
+L 11
+U 11
+D 1
+U 5
+R 2
+D 1
+L 9
+U 13
+R 10
+L 3
+R 9
+D 10
+R 10
+U 2
+L 4
+R 5
+L 12
+R 7
+D 7
+R 9
+D 6
+L 10
+D 12
+R 10
+D 9
+L 13
+R 13
+L 3
+U 6
+D 8
+L 7
+R 4
+U 7
+L 10
+D 8
+R 12
+L 3
+R 6
+L 14
+R 7
+L 4
+U 8
+D 10
+L 9
+D 10
+R 6
+L 5
+R 8
+U 13
+L 2
+R 13
+L 10
+D 12
+U 4
+R 1
+D 1
+R 10
+L 9
+R 12
+U 10
+D 4
+L 3
+R 7
+D 13
+L 11
+D 3
+U 11
+D 12
+U 4
+R 11
+D 9
+R 3
+D 14
+U 3
+L 10
+D 5
+L 14
+R 13
+L 12
+D 14
+R 2
+U 13
+D 10
+L 13
+U 11
+R 9
+D 4
+L 13
+U 13
+R 5
+L 1
+R 14
+D 4
+U 8
+D 2
+R 2
+U 6
+D 10
+L 1
+U 9
+R 7
+D 2
+L 13
+R 8
+L 12
+R 12
+U 8
+L 14
+D 11
+R 6
+L 5
+R 10
+U 5
+D 12
+L 6
+U 13
+R 3
+D 8
+U 11
+L 7
+D 5
+R 12
+D 8
+R 13
+L 9
+U 4
+D 3
+L 3
+D 15
+L 14
+U 2
+L 10
+R 14
+U 1
+D 11
+L 2
+R 11
+L 12
+R 7
+L 4
+U 15
+D 15
+R 9
+L 9
+R 1
+D 11
+L 1
+U 3
+R 12
+D 7
+U 2
+D 6
+R 1
+D 13
+R 3
+U 10
+D 4
+L 6
+U 8
+L 8
+D 7
+L 6
+U 15
+D 7
+U 1
+D 1
+L 14
+D 3
+U 10
+L 2
+U 14
+D 2
+L 5
+R 3
+U 1
+D 13
+U 13
+D 9
+L 12
+R 5
+L 14
+U 3
+D 11
+R 9
+U 8
+D 5
+R 3
+L 13
+U 2
+L 10
+D 3
+U 2
+L 12
+D 13
+R 14
+U 10
+D 8
+L 8
+R 14
+L 6
+D 14
+L 8
+R 15
+D 10
+R 1
+L 2
+D 6
+L 9
+R 1
+L 4
+D 9
+U 8
+L 1
+R 9
+L 1
+D 5
+L 6
+U 9
+L 6
+R 3
+U 5
+R 12
+D 6
+R 8
+D 3
+U 13
+D 2
+U 2
+L 4
+U 11
+R 4
+L 13
+U 6
+L 12
+U 4
+D 6
+U 11
+D 5
+U 8
+L 10
+D 13
+L 5
+U 15
+L 4
+R 12
+D 1
+L 9
+U 8
+L 4
+U 8
+D 10
+U 12
+L 12
+D 5
+R 10
+D 3
+U 1
+L 6
+R 10
+L 5
+D 8
+U 8
+D 8
+R 6
+U 13
+D 8
+L 16
+R 11
+L 14
+D 15
+R 15
+L 8
+D 1
+U 6
+D 15
+R 9
+L 12
+D 13
+U 9
+D 15
+L 6
+R 9
+U 8
+D 15
+U 7
+L 4
+R 9
+D 2
+R 5
+U 6
+D 14
+L 11
+D 9
+R 2
+U 12
+L 2
+R 15
+U 2
+L 15
+R 9
+U 6
+L 2
+D 4
+U 1
+L 13
+D 5
+R 14
+D 1
+R 13
+U 9
+R 5
+L 4
+U 9
+D 6
+U 7
+R 16
+D 11
+U 8
+R 13
+D 7
+L 12
+D 8
+U 15
+D 11
+U 14
+L 14
+U 10
+L 8
+R 16
+L 3
+U 13
+D 5
+L 2
+R 8
+L 10
+D 6
+R 15
+D 11
+U 3
+D 12
+R 12
+L 15
+U 13
+L 14
+D 2
+R 6
+L 5
+R 2
+U 2
+D 11
+U 14
+L 9
+R 14
+D 17
+R 10
+D 1
+U 11
+L 3
+U 1
+D 17
+L 10
+R 6
+L 14
+U 4
+D 2
+U 17
+L 2
+R 10
+D 14
+L 5
+U 7
+D 7
+R 13
+U 9
+D 9
+U 7
+D 17
+U 15
+D 1
+L 4
+D 11
+L 16
+U 8
+L 6
+R 5
+L 9
+D 14
+L 13
+D 11
+R 3
+L 15
+D 9
+L 10
+D 11
+L 11
+U 2
+L 17
+D 10
+R 13
+L 11
+U 16
+L 8
+U 5
+D 7
+U 11
+D 1
+L 17
+U 12
+L 4
+R 12
+U 4
+R 10
+L 4
+U 11
+D 8
+L 5
+D 6
+U 4
+D 16
+U 6
+D 12
+L 3
+U 3
+L 16
+R 2
+U 14
+R 1
+L 14
+U 11
+L 7
+D 11
+R 2
+D 2
+L 6
+U 10
+L 10
+D 15
+R 12
+D 16
+L 3
+U 15
+R 15
+D 17
+U 17
+L 13
+R 5
+D 12
+L 9
+R 10
+D 4
+L 2
+D 14
+U 8
+R 6
+U 5
+D 1
+L 11
+R 12
+L 17
+U 2
+L 17
+D 2
+R 17
+L 17
+U 3
+D 14
+U 8
+L 14
+D 12
+R 17
+L 18
+D 3
+U 10
+L 7
+U 10
+R 5
+L 15
+D 10
+L 3
+R 12
+D 10
+U 6
+L 17
+D 9
+U 18
+R 7
+U 1
+D 1
+L 9
+U 2
+L 5
+U 9
+L 8
+U 17
+D 17
+L 17
+D 15
+R 13
+U 15
+D 8
+R 13
+D 17
+L 18
+R 5
+D 7
+R 6
+D 1
+R 3
+L 10
+U 10
+D 12
+L 8
+R 11
+U 6
+R 5
+L 9
+R 6
+U 15
+D 4
+R 8
+U 1
+R 18
+L 18
+U 10
+R 17
+D 10
+R 10
+U 16
+R 16
+U 5
+R 7
+D 15
+U 15
+R 2
+U 17
+L 14
+R 1
+U 2
+L 10
+R 17
+L 14
+U 13
+D 1
+L 16
+D 4
+U 9
+L 17
+U 9
+D 9
+L 18
+D 9
+U 5
+L 18
+U 6
+L 5
+U 10
+L 18
+D 13
+R 8
+L 17
+U 9
+L 14
+D 12
+U 2
+D 5
+U 2
+D 17
+L 18
+R 8
+L 7
+R 1
+D 13
+R 11
+D 10
+R 18
+D 2
+U 17
+D 17
+L 4
+R 16
+D 16
+L 2
+D 5
+R 4
+U 9
+R 6
+D 7
+L 13
+U 19
+R 7
+U 17
+L 9
+U 6
+D 1
+L 19
+U 7
+R 6
+L 11
+R 12
+D 6
+L 17
+R 18
+D 17
+L 2
+D 8
+U 15
+D 13
+L 10
+D 10
+L 17
+D 4
+L 12
+U 11
+L 3
+D 6
+U 18
+R 18
+U 16
+L 5
+D 9
+R 17
+L 17
+D 16
+R 12
+D 18
+U 14
+R 1
+U 12
+R 4
+L 6
+U 14
+R 18
+D 6
+U 2
+D 13
+U 15
+L 14
+R 3
+D 7
+L 6
+D 15
+U 17
+L 12
+D 2
+L 12
+R 10
+L 16
+D 15
+L 18
+U 9
+L 7
+U 13
+R 11
+U 9
+L 4
+U 12
+R 14
+D 11
+R 8
+U 4
+L 17
+R 14
+D 15
+R 1
+U 5
+R 3
+L 4
+R 9
+U 1
+D 10
+R 3
+U 16
+D 6
+L 1
+U 15
+D 9
+U 10
+L 11
+U 7
+L 5
+D 19
+L 8
+U 10
+L 19
diff --git a/2022/day9/ref.txt b/2022/day9/ref.txt
new file mode 100644
index 0000000..9874df2
--- /dev/null
+++ b/2022/day9/ref.txt
@@ -0,0 +1,8 @@
+R 4
+U 4
+L 3
+D 1
+R 4
+D 1
+L 5
+R 2
diff --git a/2022/day9/ref2.txt b/2022/day9/ref2.txt
new file mode 100644
index 0000000..60bd43b
--- /dev/null
+++ b/2022/day9/ref2.txt
@@ -0,0 +1,8 @@
+R 5
+U 8
+L 8
+D 3
+R 17
+D 10
+L 25
+U 20