aboutsummaryrefslogtreecommitdiff
path: root/2022/Day02
diff options
context:
space:
mode:
Diffstat (limited to '2022/Day02')
-rw-r--r--2022/Day02/input-po.txt2500
-rw-r--r--2022/Day02/part-one.cl45
-rw-r--r--2022/Day02/part-two.cl45
3 files changed, 2590 insertions, 0 deletions
diff --git a/2022/Day02/input-po.txt b/2022/Day02/input-po.txt
new file mode 100644
index 0000000..18f755a
--- /dev/null
+++ b/2022/Day02/input-po.txt
@@ -0,0 +1,2500 @@
+B Z
+A Y
+A Y
+B X
+A Y
+B X
+A X
+B X
+B X
+B X
+C Y
+C Y
+A X
+A Y
+A Y
+B X
+A X
+C Y
+B Z
+A X
+B Z
+C Y
+C Z
+A X
+C Z
+A Y
+A X
+B Z
+B X
+A Z
+B Z
+A X
+A Z
+B X
+B X
+C Y
+B X
+A X
+A Y
+C Y
+B Z
+C X
+A X
+B Z
+B Y
+B X
+A Z
+B Z
+B Z
+A X
+B Z
+B X
+C X
+A X
+B X
+B X
+B Z
+B X
+B Z
+A Y
+B Z
+B X
+C Y
+A Y
+C Y
+B Z
+A Y
+B X
+A Y
+C Y
+A Y
+B Z
+B Z
+C Z
+B X
+A X
+C X
+B Y
+A Z
+C Z
+B Z
+A Y
+A X
+B Z
+C Z
+B X
+B Z
+A Y
+B X
+A Y
+A Y
+A X
+C Y
+B X
+B Z
+C Y
+B X
+B X
+C Z
+C Y
+C Y
+A X
+B Z
+A X
+A X
+B Y
+A Y
+B Z
+B Z
+B Z
+A Y
+A X
+A Y
+B X
+B Z
+A X
+B X
+B X
+C Y
+B Z
+A X
+A Y
+B Z
+A X
+B Z
+A Z
+A Y
+A Z
+B Z
+A X
+A Z
+A X
+C Y
+A Y
+A X
+B Z
+C Z
+B Y
+B Z
+B X
+A X
+C Y
+B Z
+B Y
+B X
+B X
+A X
+C Y
+A Y
+B X
+A Y
+A Y
+A Y
+B X
+A Z
+A Y
+B X
+A X
+A Z
+B X
+B X
+C Z
+C Y
+B X
+B X
+A Y
+C Y
+C Y
+A X
+B Z
+B Z
+A Y
+C Y
+B Z
+A Y
+A Y
+A X
+B Z
+B X
+A X
+A X
+B X
+A X
+B X
+A X
+B X
+A X
+B Y
+B Z
+A X
+B X
+B X
+B Z
+A X
+B Z
+A Y
+B Z
+A X
+A Z
+B X
+A X
+A Y
+C Y
+C Y
+B Z
+A X
+C Y
+A X
+B X
+A Y
+A X
+B X
+B X
+A Y
+A X
+A X
+A Z
+C Y
+A X
+B X
+A X
+A X
+A X
+A Y
+A Y
+C Z
+C Z
+A Y
+B Z
+A X
+B X
+C Y
+B Z
+B Z
+C Y
+C Y
+A Y
+A Y
+A Y
+A Y
+C Z
+A Y
+B Z
+B Z
+C Z
+C Y
+C Y
+C Y
+C Y
+C X
+A X
+B Z
+B Z
+B Z
+B Z
+C Y
+B Z
+A X
+A X
+A X
+B Z
+A Y
+C X
+B Z
+A X
+A Y
+B Z
+C Z
+B X
+A X
+B Z
+A X
+A Y
+B X
+C Y
+B X
+B Z
+A X
+B X
+B X
+A X
+B X
+B Z
+B X
+A X
+B X
+B X
+B X
+B Z
+B X
+B Z
+C Y
+A X
+A X
+C Y
+C Z
+A Y
+B Z
+B Z
+A X
+B Z
+A Y
+A X
+A Y
+A Y
+A Y
+B Z
+C Y
+A X
+A Y
+A Z
+B X
+A Z
+B X
+B X
+B X
+A X
+A X
+C Y
+B X
+A X
+B Z
+A Y
+A Y
+A X
+B Z
+A Y
+B X
+A Y
+B Z
+C Y
+A Y
+C X
+B X
+B Z
+C Y
+A Y
+A X
+A X
+B Y
+C Z
+B Z
+A Y
+A X
+A Y
+A X
+A Y
+A Y
+A X
+A Y
+A Z
+B X
+A X
+C Y
+A X
+C X
+A Y
+A X
+A Y
+A X
+A X
+B X
+A X
+B Z
+A X
+C Z
+B Z
+B Z
+A Y
+B X
+B X
+A Y
+B X
+B X
+C Y
+A Y
+C X
+C Y
+B Z
+A Y
+A X
+C Z
+A X
+B X
+B X
+C X
+A Y
+B Z
+A X
+A Z
+C Y
+B Z
+C Y
+C X
+A Y
+B Z
+B Z
+A Y
+B Z
+B X
+B X
+B Z
+B Z
+B X
+C Y
+A Y
+A X
+A Y
+B Z
+A X
+A Y
+A Y
+A X
+B X
+A Z
+A X
+B Z
+B Z
+A X
+C Y
+C Y
+A Y
+A X
+A Y
+B Z
+B Z
+B X
+B Z
+A Y
+A X
+A Y
+A Y
+A Z
+C Y
+C Z
+A X
+C Y
+A Y
+A X
+A Y
+A X
+C Z
+B Z
+B X
+B X
+B X
+A X
+A Z
+B Z
+B X
+B X
+B X
+B X
+B X
+B X
+C Y
+B X
+B Z
+A X
+C Z
+A X
+C X
+B Z
+A X
+A Y
+A Z
+C Y
+B X
+C Z
+C Y
+A Z
+B Z
+C X
+A Y
+A Z
+B Z
+B Z
+B Z
+A X
+A X
+B X
+A X
+B Y
+A X
+A Y
+A Y
+B X
+A Y
+B X
+C Z
+A Y
+C Y
+A X
+A X
+A Y
+B X
+B Z
+A X
+B X
+B Z
+A Z
+C Z
+B Z
+B X
+A X
+A X
+B X
+A X
+A Y
+A Y
+B Z
+A X
+A X
+A X
+A X
+C Y
+C Z
+A X
+A Z
+A X
+B X
+A X
+B X
+B Z
+B X
+C Y
+B Z
+A X
+B Z
+A Z
+A Y
+A Y
+A X
+A X
+B Z
+A Y
+A X
+A X
+B X
+B Z
+A Z
+A Y
+A Z
+B X
+B Z
+A Y
+A Z
+B X
+B Z
+A Z
+A Y
+A Y
+A X
+A Y
+B Z
+A Y
+A X
+A X
+A Y
+A Y
+A X
+A Y
+A X
+C Y
+B Z
+B X
+B X
+B X
+A X
+B Z
+B Z
+A X
+B Z
+A Y
+C Y
+C Y
+A Y
+B Z
+B X
+C Y
+A X
+A Z
+B X
+B X
+C Y
+A X
+B X
+B Z
+A Y
+A X
+B Z
+A Y
+A Y
+C Z
+B Z
+B Z
+A X
+C Y
+A Y
+A Z
+A Y
+C Z
+B Z
+A Y
+C Z
+B X
+A X
+B X
+B X
+C Y
+A Y
+B Y
+A Y
+B X
+A Y
+A Y
+B X
+B Z
+B X
+A Y
+A Y
+C Y
+C Y
+A Y
+C Y
+A Z
+B Z
+A X
+A Z
+A X
+C Y
+A X
+A X
+B Z
+B Z
+C X
+C Z
+A X
+C Y
+B Z
+B X
+A Y
+A X
+A X
+B Z
+A X
+A Y
+A Y
+A X
+B Z
+C Y
+A Y
+B Z
+A Y
+B X
+A X
+A X
+A Y
+A X
+B Z
+C Y
+A X
+A Z
+B Z
+B Z
+A X
+C Y
+A X
+B X
+A X
+A X
+B X
+A X
+B X
+B Z
+C X
+A X
+C Y
+C Y
+B Z
+B X
+C Y
+C X
+A Y
+B X
+A Y
+B Z
+C Z
+B Z
+A Y
+A X
+B X
+A Y
+A Y
+B Z
+B X
+A Y
+B X
+A X
+A Y
+B Z
+B X
+A Z
+A Y
+A X
+A Y
+B Z
+B Z
+A X
+A X
+B Z
+A X
+B Z
+A X
+B X
+B X
+A X
+A Y
+B X
+A Y
+A X
+B X
+B X
+B Z
+B X
+C X
+B Z
+A Y
+B Z
+A Y
+A X
+B Z
+B X
+B X
+C Y
+B X
+B X
+A X
+A Y
+A X
+B X
+C Y
+C Z
+A X
+B X
+B X
+A Y
+B Z
+B X
+A X
+B X
+C X
+A Y
+A Y
+A Y
+A Y
+C Y
+A Y
+A Y
+A X
+A Y
+B X
+A Z
+A X
+B Z
+B X
+A X
+B Z
+A X
+B Y
+A X
+A X
+A Y
+B X
+B Z
+C X
+A X
+A X
+A Y
+B Z
+C Z
+A X
+C X
+B Z
+B X
+B X
+B Z
+B Z
+A X
+C Z
+A Y
+A Y
+B Y
+B X
+B Y
+A X
+B Z
+B Z
+A X
+B X
+A X
+B Z
+A Y
+A Y
+B Y
+A Y
+A Y
+A X
+B X
+A X
+B Z
+B X
+B Z
+C Y
+A X
+B Z
+A Z
+A X
+A X
+B X
+B X
+A Z
+B X
+A X
+A Z
+A X
+A Z
+A Y
+A X
+A Z
+C X
+A X
+C Y
+B X
+A X
+B X
+B X
+B X
+B X
+A X
+B Z
+B X
+A Y
+B X
+A Y
+B X
+B X
+A Y
+B X
+A X
+A X
+A Y
+B Z
+A Z
+B Z
+C Y
+B Y
+A Y
+A X
+A Y
+B Z
+A X
+B Z
+B X
+A X
+B X
+B X
+A X
+A Y
+B Z
+C Y
+A Y
+B Z
+C Y
+A X
+C Y
+A Y
+A Y
+A X
+C Y
+A Y
+B Z
+B Z
+A Y
+B Z
+B Z
+C Y
+A X
+A Y
+A Y
+C Z
+A X
+A Y
+A Y
+A X
+A Y
+B X
+A Y
+A X
+A Y
+B X
+B X
+A Y
+A Y
+A Y
+C Y
+A X
+A X
+B X
+A X
+B Z
+C Y
+B Z
+C Y
+A X
+C Z
+C Y
+B Z
+B Z
+A Y
+B X
+B Z
+C Y
+A X
+A X
+A X
+B Z
+A X
+A Y
+B Z
+C X
+C Y
+A Z
+A X
+C Y
+A X
+A X
+B X
+C Y
+A Z
+B Z
+C Y
+B X
+A X
+A X
+C Y
+A X
+A X
+B Z
+B X
+A X
+A Y
+B X
+A X
+A X
+B X
+C Y
+A Y
+C Z
+A Y
+B Z
+A X
+B X
+B X
+A X
+B X
+B Y
+A X
+C Y
+A Y
+A Y
+B X
+A Y
+B X
+B Z
+A Y
+C Y
+C Y
+A Z
+B Z
+C Z
+B Z
+A Z
+A Y
+B Z
+A X
+B Z
+A Z
+A Z
+B Z
+B X
+A X
+A X
+A X
+B X
+A X
+A Y
+C Y
+B Z
+B X
+A X
+B Z
+B X
+B Z
+A X
+B X
+B X
+B X
+A X
+B Z
+A X
+B X
+A X
+C Y
+A X
+A Y
+A Z
+C Y
+A Y
+A X
+C Y
+B Z
+A X
+B Z
+A X
+B Z
+B Z
+B Z
+C Z
+A Z
+B X
+A X
+A Y
+A Y
+A Y
+B X
+C X
+A Y
+A X
+A X
+C Y
+A Y
+A Y
+B X
+C Y
+A Z
+A Z
+A Y
+C Y
+B Z
+A Z
+C Y
+A X
+B X
+B X
+B X
+A X
+C Z
+C Y
+B Z
+B Z
+A X
+A Y
+A Y
+A Y
+C X
+A Z
+A X
+B X
+B Z
+B Z
+A Z
+A X
+B Z
+A Y
+B Z
+C X
+A X
+B Z
+A Y
+A Y
+A X
+B Z
+B X
+A Y
+A Y
+A Y
+A Y
+A Z
+A X
+C Y
+A Y
+A Y
+C Y
+C Y
+B X
+C Y
+A X
+A Z
+B Z
+C Y
+A Z
+A X
+A Z
+A Y
+C Y
+B Z
+A Y
+B X
+B X
+A X
+B X
+A Z
+B Z
+A X
+A X
+C Y
+A Y
+C Y
+C Y
+B X
+A X
+C X
+B X
+B Z
+A Y
+B Z
+A X
+A Y
+B Z
+B Z
+A Y
+A Y
+A X
+A Y
+B Z
+A Y
+B Z
+C Y
+C Y
+B X
+A Z
+A Y
+C Y
+B X
+B Z
+B X
+C Y
+B Z
+A Y
+A Y
+B Z
+A X
+A Z
+B X
+A X
+C Z
+B X
+B X
+B X
+C X
+C Y
+B X
+A Y
+B Z
+B X
+B Z
+C Y
+A X
+A Y
+A X
+B X
+B Z
+B Z
+A X
+B X
+C Y
+C X
+B Z
+A X
+A Y
+B Z
+B Y
+C Y
+C Y
+A Y
+B Z
+B X
+A Y
+B Z
+A X
+A X
+A Y
+B Z
+A Y
+A X
+B Z
+A X
+C Y
+A Y
+C Z
+B Z
+C Y
+B Z
+A Y
+C Y
+A X
+A Y
+B X
+B Z
+B X
+B Z
+A Y
+B X
+A Y
+B Z
+A Y
+C Y
+A X
+A X
+B Y
+B X
+A Y
+C X
+B Z
+B Z
+A Y
+C Z
+B X
+A X
+A Y
+B Z
+C Y
+C Y
+A Y
+A Y
+B X
+C Y
+A Y
+B X
+A X
+B X
+B Z
+A X
+A Y
+B X
+B X
+C Y
+B Z
+A X
+A X
+B X
+C Y
+B X
+A X
+A X
+B X
+C Z
+C Y
+B X
+B Z
+A X
+A Y
+C Y
+A Y
+A Y
+A Y
+B X
+C Y
+B X
+A X
+A Y
+A X
+B Z
+A Z
+B X
+A Y
+B X
+A Y
+B X
+B Z
+A X
+A X
+B Z
+A X
+A Y
+B X
+B Z
+B Z
+A X
+A Y
+A Y
+A X
+A X
+B X
+B Z
+B Y
+A X
+C Y
+A Y
+C Y
+A Y
+C X
+B X
+B X
+A X
+B Z
+A X
+C Y
+B X
+C Y
+A Z
+A X
+B Y
+A X
+B X
+B Z
+A Z
+C Y
+A Y
+A Z
+A Y
+A X
+A Y
+A X
+A X
+A X
+B Z
+B Z
+C X
+A X
+C Z
+B X
+C X
+B Z
+B Z
+A Z
+B X
+A Y
+B Z
+C Y
+A X
+C Y
+C Y
+B Z
+A Y
+A Z
+A X
+B Z
+B X
+C Z
+C Y
+A Y
+C Z
+B X
+B Z
+C Y
+A X
+B X
+C Z
+B Z
+C Y
+B X
+A Y
+B Z
+C X
+A Z
+A X
+A Y
+B Z
+B X
+B X
+B X
+B Z
+A Z
+A X
+B Z
+B X
+A X
+A Y
+B X
+B X
+A X
+A X
+B X
+B X
+C Y
+A Y
+C Z
+A Y
+A Y
+A X
+B X
+B Z
+A X
+B X
+A X
+B X
+A Y
+C Y
+A Y
+A X
+A Y
+A Y
+C Y
+B Z
+B Z
+A X
+A Y
+C Y
+C Y
+A Y
+A X
+A X
+C Y
+B X
+A Y
+B Z
+C Y
+B Z
+A X
+A Y
+A X
+B Z
+B X
+C Y
+A Z
+C X
+A Y
+A X
+C X
+B X
+A Y
+A X
+B Z
+B Z
+C Y
+A X
+A Y
+A Y
+B X
+A Y
+A X
+C Y
+B X
+C Y
+A Y
+A Y
+A Y
+A X
+A X
+C Z
+B X
+C Y
+B Z
+A X
+A Y
+B Z
+C X
+B Z
+A X
+C Y
+C Y
+B Z
+B Z
+A X
+C Y
+C Y
+A Y
+C Y
+B X
+B Z
+A Z
+C Y
+A Z
+B Z
+A X
+B Z
+A X
+B Z
+A X
+A Y
+A X
+B Z
+A X
+A X
+A X
+B X
+C Y
+B Z
+B X
+A Y
+A Y
+C Y
+B X
+A Z
+C Z
+C Y
+A X
+A Y
+A X
+B Z
+A X
+B X
+C Z
+A Y
+C Y
+A Y
+A Y
+A Z
+C Y
+A X
+B Z
+C X
+B Z
+A X
+B Z
+B Y
+A X
+C Y
+A X
+A Y
+B X
+A X
+B X
+A Z
+A X
+A Y
+B X
+A Y
+B X
+C Y
+B X
+A X
+A Y
+A X
+B X
+A X
+A X
+B X
+A Y
+B Y
+A X
+A Y
+A X
+B X
+C Y
+A X
+A Z
+C Y
+A Y
+C Z
+B X
+B Z
+A Y
+C X
+A Z
+A X
+A X
+B Z
+C X
+A Y
+A X
+A Y
+A X
+A Y
+B Z
+B X
+A Z
+B Z
+A X
+A Y
+B X
+B Z
+A Y
+B Z
+C X
+B Z
+A X
+B X
+B X
+C Y
+B X
+B Z
+A X
+A Y
+B X
+A X
+B Z
+A X
+B Z
+B Z
+C Y
+C Y
+B Z
+B X
+B Z
+A X
+A Y
+A X
+B X
+B Z
+A Y
+B Z
+B X
+B X
+B X
+B Z
+B Z
+A X
+B X
+A Y
+B X
+C Y
+B Z
+B Z
+B X
+C Z
+A Y
+A Y
+B Z
+B Z
+A X
+C Z
+A Y
+A X
+A Y
+B X
+C Y
+A Y
+A X
+B X
+B Z
+A Z
+A Y
+A Z
+A X
+B X
+B X
+A Z
+A Y
+A X
+C Y
+A Y
+A X
+C Z
+A X
+B X
+A Y
+B X
+A Y
+A X
+A Y
+B Z
+B Z
+C Z
+A Y
+A X
+A Y
+A Z
+A Y
+B Z
+B X
+A X
+A X
+B Z
+C X
+A Y
+A X
+A Z
+C X
+C Y
+B Z
+A Y
+B X
+B Z
+C X
+B Z
+A Y
+B Z
+B X
+A Y
+B Z
+B X
+A X
+B Z
+C Y
+A Y
+B Z
+A X
+A X
+B Z
+A X
+C Y
+A X
+B X
+B Z
+B Z
+C Y
+A X
+B Z
+C Z
+B Z
+A Y
+B Z
+B Z
+A X
+B Z
+A X
+B X
+A X
+A X
+B Z
+B X
+A Z
+B Z
+B X
+B Z
+B Z
+B Z
+B Z
+A Y
+B X
+A Y
+B Z
+B X
+A X
+A X
+B X
+B Z
+C Y
+B Z
+B X
+B Z
+B Z
+C Y
+A X
+A Y
+B X
+A Z
+B Z
+B Z
+A X
+A Y
+B Z
+A Z
+A Y
+A Y
+A Y
+A Y
+C Y
+B Z
+A X
+A X
+B X
+A Y
+A Y
+A Y
+A Y
+B X
+B Z
+C Y
+B X
+B X
+A Y
+B X
+B Z
+A X
+C X
+B X
+B X
+B X
+C X
+C Y
+A Y
+A X
+B X
+A Z
+C X
+B Z
+C Y
+B Z
+A Y
+A X
+B X
+B X
+B X
+A Y
+B Z
+A Z
+C Y
+A Y
+A X
+B Z
+C Y
+A Y
+A X
+B Z
+C Z
+C Y
+A Y
+A X
+A Y
+C Z
+A Y
+B Z
+B X
+B X
+C Z
+C Y
+C Y
+C Z
+A Y
+A Z
+C Z
+A Y
+A X
+B Z
+A Y
+A X
+C X
+A Y
+C Y
+C Y
+A X
+B Z
+B X
+A Z
+B X
+A X
+C Y
+A Z
+B Z
+A X
+B Z
+B X
+A Y
+C Z
+B X
+B Z
+C Y
+A X
+B Z
+B X
+A Y
+B X
+C X
+A X
+A X
+A X
+A X
+C Y
+C Y
+A X
+B Z
+A X
+A Y
+A Y
+A X
+A X
+B Z
+B Z
+B X
+A Y
+A Z
+C Y
+A X
+A Y
+B Z
+B X
+B X
+A X
+C X
+B Z
+C Y
+C Z
+B Z
+A X
+B Z
+A Y
+A Y
+A Y
+C Z
+C Y
+A Y
+C Y
+A Y
+A X
+B Z
+B Z
+B X
+C Z
+A Y
+C X
+B Z
+A Y
+B Z
+B X
+B Z
+A X
+A X
+B Z
+C Y
+A Z
+A Y
+B Z
+A Z
+C Y
+B Z
+B X
+A X
+B Z
+B X
+A X
+B Z
+A X
+A X
+B Z
+C Y
+B Z
+A Y
+A X
+A X
+C X
+A Y
+B Z
+C Y
+A Z
+C Y
+B X
+A X
+B X
+C X
+C Y
+B Z
+B Z
+A Y
+A Z
+B X
+B Z
+A Y
+B X
+A Z
+C Y
+C Z
+C Y
+A Y
+C X
+C X
+B X
+A Y
+A X
+B X
+B X
+C Z
+C X
+A X
+A Y
+B X
+B X
+C X
+B Z
+A Y
+B Z
+A Y
+B Z
+C Y
+A X
+A X
+B X
+B Z
+A X
+C Y
+B X
+A X
+A X
+A Y
+A Z
+B X
+A X
+A Y
+A Z
+B X
+B Z
+A Y
+A X
+B X
+A Y
+C Y
+B Y
+B X
+A Y
+C X
+A Z
+C Y
+A X
+B Y
+C Y
+B Z
+B X
+C Y
+C Y
+A Y
+A X
+C X
+A Z
+A X
+B Z
+B X
+B X
+A X
+B X
+A Z
+B X
+B Z
+B Z
+C Z
+B Z
+B X
+C Y
+C Y
+A Z
+C X
+A X
+B Z
+A X
+C Y
+A X
+A Z
+B Z
+B Z
+A X
+B Z
+B Z
+A X
+C Z
+B Z
+B X
+C X
+A Z
+B X
+A Y
+B Z
+C Y
+B Z
+B X
+A Y
+B Z
+A X
+B Z
+A Y
+A Z
+B Z
+C Y
+C Y
+A Z
+B Z
+B X
+B X
+C Z
+B Z
+B Z
+A X
+A X
+A X
+A X
+A X
+C Y
+A X
+B Z
+A X
+B Z
+C Y
+C X
+A Y
+B X
+A X
+B Z
+A Y
+B Z
+C X
+A Y
+B X
+A X
+A Y
+B Z
+A Y
+A X
+B X
+B Y
+B X
+B Z
+B X
+A X
+B X
+B X
+B X
+A Z
+A X
+A X
+B X
+C Y
+A X
+A X
+B X
+B X
+B X
+B X
+A Y
+A X
+B Z
+A X
+A Y
+C Y
+B Z
+A Y
+A X
+C Z
+A X
+B Z
+A X
+B Z
+B Z
+B Z
+C Y
+B X
+C Y
+A Z
+B Z
+A X
+A Y
+A Y
+A Y
+B X
+B Z
+B Z
+A Y
+B Z
+B Z
+B X
+A X
+B Z
+A Y
+A Y
+A X
+B Z
+A X
+A X
+B Z
+C Y
+B X
+A X
+A X
+A Z
+C Y
+A X
+A X
+A X
+A X
+A X
+C Y
+A X
+A X
+B X
+B Z
+C Z
+B X
+A Y
+B Z
+A X
+A Y
+B Z
+B Z
+B Z
+B Z
+A X
+A Y
+A Y
+B X
+A Y
+A Z
+A Y
+B Y
+A X
+B Z
+A X
+A Y
+C Y
+B Z
+C Y
+A X
+B Z
+A X
+A Z
+B Z
+A X
+B X
+C Y
+A Y
+A X
+A Z
+C Y
+A Z
+A Y
+A Y
+A X
+A X
+A Z
+A Y
+B X
+B Z
+B X
+B X
+C Y
+A Y
+A X
+B X
+A X
+B Z
+A X
+A X
+B Z
+C Y
+B X
+C Y
+A X
+B X
+C Z
+A Y
+B X
+A Y
+A Y
+B X
+C Y
+B Z
+A Y
+B Z
+A Y
+A X
+A X
+A Y
+B Z
+B Z
+A Y
+A X
+A X
+B X
+B Z
+A Y
+A X
+C Y
+B X
+C Y
+B Z
+B Z
+B X
+A Y
+B X
+B X
+A X
+C Y
+C Y
+B Z
+B X
+A Y
+C Z
+C Z
+C Y
+A Y
+B X
+B Z
+B X
+A X
+B Z
+A Y
+A X
+C Y
+B X
+A Y
+B X
+A Z
+A X
+A Y
+C Y
+A Y
+A X
+C Y
+C Z
+B X
+A Y
+C Y
+B Z
+B X
+A X
+B X
+B X
+C Y
+B Z
+B Z
+B Z
+B X
+B Z
+A Y
+B Y
+B Z
+A Z
+A X
+B Y
+A X
+B Z
+A Y
+B X
+A X
+B Z
+C Z
+B Z
+B Z
+A Y
+B X
+A X
+A X
+B X
+A Y
+A Y
+A X
+C Z
+C X
+A Y
+C X
+A Y
+A Z
+C Y
+A X
+B X
+A X
+B Z
+A X
+C Y
+A Y
+B X
+C Y
+A Y
+A Z
+A Y
+A Y
+B Z
+C Z
+C Y
+A Y
+A Y
+B X
+C X
+A Z
+B Z
+C Y
+A X
+A Y
+B X
+A Y
+C Y
+C Z
+A Y
+B Z
+A X
+C Y
+B X
+B Z
+A X
+C Z
+B Z
+C Y
+C Z
+B Z
+A X
+A Y
+A X
+B X
+B Z
+B X
+A X
+B Z
+C Y
+A Z
+A Z
+C Y
+A Y
+C X
+B X
+A X
+A X
+B X
+B Z
+B X
+B Z
+B Z
+A X
+B X
+A X
+A Y
+A X
+C Z
+B Z
+A X
+C Z
+C Z
+C X
+A X
+B X
+A X
+A Z
+A X
+C Z
+A X
+A X
+B Z
+C Z
+C Y
+B Z
+B X
+A X
+A X
+A Y
+B Z
+A Y
+B X
+B Z
+C X
+B Z
+B X
+A Y
+B Z
+A Z
+A Y
+A Y
+B X
+C X
+A Y
+A Y
+C Y
+C Y
+B Z
+B X
+C Y
+C Y
+A Y
+A X
+A Y
+A Y
+B Z
+B X
+A X
+B X
+B Z
+B Z
+A Z
+A Z
+A Z
+A X
+B X
+B Z
+A X
+B Z
+A X
+B Z
+B X
+C Z
+B Y
+A Y
+A Y
+A X
+A X
+B Z
+B Z
+B X
+A Y
+C Y
+B X
+A X
+B X
+C Y
+A X
+A X
+B X
+C Y
+C Y
+C X
+B X
+C Y
+A Z
+B Z
+B Z
+B Z
+B X
+B Z
+A X
+B X
+A X
+A Y
+C Z
+B X
diff --git a/2022/Day02/part-one.cl b/2022/Day02/part-one.cl
new file mode 100644
index 0000000..e93cae8
--- /dev/null
+++ b/2022/Day02/part-one.cl
@@ -0,0 +1,45 @@
+(defvar *prog-input*)
+
+(let ((ui (read-line)))
+ (if (equal ui "")
+ (setq *prog-input* *standard-input*)
+ (setq *prog-input* (open ui))))
+
+(let
+ ((cal (read-line *prog-input* NIL)) (total-score 0)
+ (your-rps '(#\0 #\X #\Y #\Z)) (enemy-rps '(#\0 #\A #\B #\C))
+ (cy-rps 0) (ce-rps 0))
+
+ (loop until (or (equal cal "end") (not cal)) do
+ ;; Rock is 1, paper is 2, scissors is 3
+ (setq ce-rps (position (char cal 0) enemy-rps))
+ (setq cy-rps (position (char cal 2) your-rps))
+
+ ;; We want, when we lose to add 3 * 0, when we draw to add 3 * 1 and when we win to add 3 * 2
+ ;; To get numbers 0, 1, and 2, we'll use `3 mod N`
+ ;; Writing down all possible combinations
+ ;; (from left to right, columns are "Your choice", "Enemy choice", "Result"):
+ ;; 1 1 | 1 = 3 % 1 (Draw)
+ ;; 1 2 | 0 = 3 % 3 (Lose)
+ ;; 1 3 | 2 = 3 % 2 (Win)
+ ;; ----+-----------------
+ ;; 2 1 | 2 = 3 % 2 (Win)
+ ;; 2 2 | 1 = 3 % 1 (Draw)
+ ;; 2 3 | 0 = 3 % 3 (Lose)
+ ;; ----+-----------------
+ ;; 3 1 | 0 = 3 % 3 (Lose)
+ ;; 3 2 | 2 = 3 % 2 (Win)
+ ;; 3 3 | 1 = 3 % 1 (Draw)
+ ;; We notice, that N (in "3 % N") is a rotation of the numbers 3, 2, 1, where if your choice
+ ;; is 3, we don't rotate them, if it's 2 we rotate by one (backwards) and so on.
+ ;; We can get 3, 2, 1 from the enemie's 1, 2, 3 by subtracting them from 4. Then we can use
+ ;; your choice to do the "rotation" (since we're doing mod, 3 % 3 = 3 % 6).
+ (setq total-score (+ total-score (* 3 (mod (+ (- 4 ce-rps) cy-rps) 3)) cy-rps))
+
+ (setq cal (read-line *prog-input* NIL)))
+
+ (print total-score))
+
+(if (not (eq *prog-input* *standard-input*))
+ (close *prog-input*))
+
diff --git a/2022/Day02/part-two.cl b/2022/Day02/part-two.cl
new file mode 100644
index 0000000..40090e2
--- /dev/null
+++ b/2022/Day02/part-two.cl
@@ -0,0 +1,45 @@
+(defvar *prog-input*)
+
+(let ((ui (read-line)))
+ (if (equal ui "")
+ (setq *prog-input* *standard-input*)
+ (setq *prog-input* (open ui))))
+
+(let
+ ((cal (read-line *prog-input* NIL)) (total-score 0)
+ (your-rps '(#\0 #\X #\Y #\Z)) (enemy-rps '(#\0 #\A #\B #\C))
+ (cy-rps 0) (ce-rps 0))
+
+ (loop until (or (equal cal "end") (not cal)) do
+ (setq ce-rps (position (char cal 0) enemy-rps))
+ ;; We reuse numbers 1,2,3 to, for now, signify your strategy
+ (setq cy-rps (position (char cal 2) your-rps))
+
+ ;; Similarly to part-one.cl, if we write down the table of possible combinations
+ ;; (from left to right, columns are "Your strategy", "Enemy choice", "What your choice should be"):
+ ;; 1 1 | 3 = 1 + 2
+ ;; 1 2 | 1 = 1 + 0
+ ;; 1 3 | 2 = 1 + 1
+ ;; ----+----------
+ ;; 2 1 | 1 = 1 + 0
+ ;; 2 2 | 2 = 1 + 1
+ ;; 2 3 | 3 = 1 + 2
+ ;; ----+----------
+ ;; 3 1 | 2 = 1 + 1
+ ;; 3 2 | 3 = 1 + 2
+ ;; 3 3 | 1 = 1 + 0
+ ;; Your choice is a rotation of the numbers 1, 2 and 3, where if your strategy is 1 (lose)
+ ;; you rotate once, if your strategy is 2 (draw) you rotate zero times and if it is 3 (win)
+ ;; you rotate two times.
+ (setq cy-rps (+ (mod (+ cy-rps ce-rps) 3) 1))
+
+ ;; Refer to part-one.cl for explanation on math
+ (setq total-score (+ total-score (* 3 (mod (+ (- 4 ce-rps) cy-rps) 3)) cy-rps))
+
+ (setq cal (read-line *prog-input* NIL)))
+
+ (print total-score))
+
+(if (not (eq *prog-input* *standard-input*))
+ (close *prog-input*))
+