aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AoC2022/02/input2500
-rw-r--r--AoC2022/02/makefile13
-rw-r--r--AoC2022/02/solver.el55
3 files changed, 2568 insertions, 0 deletions
diff --git a/AoC2022/02/input b/AoC2022/02/input
new file mode 100644
index 0000000..b955ddb
--- /dev/null
+++ b/AoC2022/02/input
@@ -0,0 +1,2500 @@
+A Z
+A Z
+A Z
+B Z
+C X
+A Z
+A Z
+C Y
+A Z
+A Y
+B Y
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+C Y
+C X
+C X
+C X
+A Z
+A Z
+B Y
+A Z
+A Z
+C Z
+B Z
+A Y
+A Z
+B Y
+A Z
+B Y
+A X
+B Z
+A Z
+A Z
+A Z
+C X
+C X
+A X
+A Z
+A Z
+C X
+A Z
+B Y
+A Z
+B Z
+A Z
+A Z
+B Z
+B Z
+C Y
+B Z
+A X
+B Z
+A Z
+B Y
+A Z
+B Z
+C X
+A Z
+B Y
+B Z
+A Z
+B Y
+C X
+B Y
+A Z
+A Z
+A Z
+B Y
+A Z
+A Z
+B Y
+B Z
+C Z
+A X
+A Z
+A Z
+C Z
+C X
+A Z
+C X
+A Z
+A X
+A Z
+A Z
+A Z
+B X
+B Y
+A Z
+A Z
+A Z
+C Y
+B Y
+C X
+C X
+A Z
+A Z
+A Z
+A X
+C X
+B Z
+C X
+C X
+A Z
+A Z
+A Z
+A Z
+B Z
+A Y
+A Y
+C X
+A Y
+C X
+B Y
+A Z
+C Z
+A Z
+B Y
+A Z
+C X
+B X
+A Y
+C X
+A Z
+A Z
+A Y
+B Z
+C X
+C X
+C X
+B Y
+A Z
+A Z
+B Y
+A Z
+B Z
+C X
+C Z
+A Z
+C X
+B Z
+A Z
+B Y
+C X
+A Y
+B Y
+C X
+C X
+A Z
+A Y
+A Z
+A Z
+A Z
+A Y
+C X
+A Z
+A Z
+B Z
+A Z
+B Z
+A Z
+C Z
+C Z
+A Z
+A Z
+B Z
+A Z
+B Z
+A Z
+B Z
+B Y
+B Y
+B Z
+B Y
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+C X
+A Z
+A Z
+C Y
+A Z
+C Y
+B Y
+C X
+B Z
+A Z
+A Z
+C X
+A Z
+B Y
+A Z
+A Z
+A Z
+B Z
+A Z
+B Y
+A Z
+B Y
+A Z
+A Z
+C Z
+A Z
+C X
+C Y
+C X
+C Y
+C X
+A Z
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+B Y
+A Z
+C X
+C X
+A Z
+A Z
+C Z
+C Z
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+C X
+A Z
+A Z
+A Z
+C X
+C X
+A Z
+C Y
+A X
+A Z
+A Z
+A Y
+B Z
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+B Z
+B Z
+A Y
+B Z
+C X
+B Y
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+B Z
+C X
+A Z
+A Y
+A Z
+B Y
+B Z
+C Z
+A Z
+A Y
+A Z
+B Z
+A Y
+C X
+A Z
+A Y
+A Z
+C Y
+A Z
+A Z
+B Y
+C X
+A Z
+A Z
+A X
+A Z
+C X
+A Z
+B Y
+A Z
+C X
+A Z
+B Y
+A Z
+C Y
+B Z
+C X
+A Z
+C X
+B Y
+A Z
+C X
+A Z
+B Y
+A Z
+A Z
+C Z
+A Z
+A Y
+A Z
+A Z
+C X
+A Y
+A Z
+B Z
+A Z
+A Y
+C X
+A Z
+B Y
+A Y
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+B Z
+B Y
+B X
+C Y
+B X
+A Z
+A Y
+C X
+A Z
+A Z
+C X
+C Y
+A Y
+A Z
+C X
+B Y
+B Y
+C X
+A Z
+C Y
+A Z
+A Z
+A Z
+A Z
+B X
+A Z
+A X
+B Z
+C Z
+A Z
+A Z
+A Y
+A Z
+A Y
+A Z
+A Z
+B Y
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+C Z
+A Z
+A Y
+B Y
+B Z
+A Z
+B Y
+B Z
+A Z
+C X
+A Z
+B X
+A Z
+A Z
+A Y
+A Z
+B X
+B Z
+A Z
+B Z
+A Y
+A Z
+A Z
+A Z
+B Y
+A Z
+B Z
+A Z
+B Z
+A Z
+A Y
+A Z
+B Z
+A Z
+C X
+C X
+A Z
+A Z
+B Z
+A Z
+A Z
+C X
+A Z
+A X
+A Z
+A X
+C X
+A Y
+C Y
+B Y
+A Z
+A Y
+A X
+A Z
+A Y
+A Z
+A Z
+A Z
+C X
+B Z
+A Z
+B Y
+A Z
+A Y
+A Z
+A Z
+B Z
+C X
+A Z
+A Z
+A Y
+C X
+C Y
+B Z
+A Z
+A Z
+B Z
+C X
+A Z
+A Z
+A Z
+C Y
+A Y
+A Z
+B Z
+B Z
+A Z
+B Z
+A X
+A Z
+B Z
+A Z
+A Z
+B Y
+A Z
+A Y
+B Y
+A Z
+B Z
+C X
+C Y
+A Z
+B Z
+C X
+A Z
+B X
+A Z
+A Z
+C X
+A Z
+A Y
+B Z
+B Y
+A Z
+A Y
+C Y
+A Z
+C X
+B Z
+A X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+C X
+B Y
+B Z
+C X
+C X
+C X
+A Z
+A Z
+B Z
+B Y
+A Z
+A Z
+B Y
+B Y
+A Y
+A Y
+A X
+A Y
+B Y
+A Y
+C X
+A Z
+A Z
+A Z
+A Y
+B Y
+A Z
+C Y
+B Z
+C X
+A Y
+A Z
+C Z
+A Z
+B Z
+C X
+B Z
+C X
+B Z
+B Y
+B Y
+C X
+A Z
+A Z
+B Z
+B Z
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+C X
+C Y
+B X
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+A X
+A Z
+C X
+A Z
+C Z
+A Z
+C X
+C Z
+A Z
+A Z
+A Y
+B Z
+A X
+A Z
+A Z
+A Z
+C X
+B Y
+A Z
+B Y
+A Z
+B Y
+A Z
+C X
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+B X
+B Y
+C X
+C X
+A Z
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+A Y
+A Z
+A Z
+A Z
+C Y
+A Z
+A Z
+B Z
+B Y
+C X
+A Y
+A Z
+B Z
+A Z
+A Z
+A Z
+B Y
+C Z
+A Y
+C Y
+A X
+A X
+B Z
+A Y
+C X
+C X
+B Z
+A Z
+B Z
+A Z
+A Z
+A Y
+B Z
+C Y
+A Z
+A Z
+A Z
+C X
+B Y
+A X
+A Z
+C X
+A Z
+B Z
+B Y
+C X
+B Y
+A X
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+A Y
+A Y
+A Y
+A X
+A Z
+A Z
+B Z
+A Y
+A Z
+C X
+C X
+A Z
+A Z
+B Z
+B Y
+A Z
+A Z
+C X
+A Y
+C X
+B Z
+A Z
+A Z
+A Z
+A Y
+A X
+C Y
+C X
+C X
+A Z
+A Y
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+B Z
+C X
+C X
+B Z
+B Z
+C X
+A Z
+B X
+A Z
+B Z
+A Y
+A Z
+A Z
+C X
+A Z
+C Z
+A Z
+B Z
+C X
+A Z
+B Y
+A Y
+A Z
+A Z
+B X
+C X
+B Z
+C X
+C X
+C Y
+B Z
+C X
+A Y
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+C X
+C Y
+A Z
+A Z
+B Z
+A Z
+B Y
+A X
+A X
+B Z
+C X
+B Y
+A Z
+C X
+A Z
+B Z
+A Z
+B Y
+B Y
+A X
+B Y
+A Z
+A X
+A Z
+C X
+A Z
+A Z
+B Y
+C Y
+A X
+A Z
+C Y
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+C X
+A Z
+B Y
+A Z
+B Z
+B Z
+C X
+B Y
+A Z
+C Y
+A Y
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+B Y
+B Z
+A Z
+A Z
+C Y
+A Z
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+C Y
+B Y
+B Z
+A Z
+B Z
+A Z
+B Z
+A Z
+A Z
+A Y
+A Z
+A Z
+B Z
+C Y
+A Z
+B Z
+A X
+C X
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+A Z
+C X
+A Z
+B Y
+A Z
+C Y
+A Y
+B Z
+C X
+A Y
+A Z
+A Y
+A Z
+B Z
+B Y
+A Y
+B Z
+A Z
+A Z
+C Z
+C Z
+A Y
+A Z
+A Z
+C X
+A Z
+A X
+C Y
+C X
+A Z
+A Z
+B Y
+B Z
+C Y
+A Z
+B Z
+A Z
+C Z
+A Z
+A Y
+B Y
+C X
+A Z
+A Z
+A Z
+C X
+A Z
+A Y
+A Z
+A Z
+B Z
+C X
+C X
+C X
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+A X
+A Z
+C X
+C X
+B Z
+A Z
+A Z
+A Z
+B Y
+A Z
+C X
+A X
+B Z
+C X
+A Z
+C X
+A Y
+A Z
+A Z
+A Y
+A Z
+A Y
+A X
+C X
+A Z
+A Y
+B Y
+A Z
+A Y
+C Z
+B Y
+A Z
+A Z
+A Y
+A Z
+C X
+A Z
+B Y
+B Z
+B Z
+A Z
+A Z
+A Z
+C X
+A Z
+B Y
+B Y
+A Z
+A Y
+C X
+A Z
+C X
+A Z
+C X
+C X
+A Y
+B Z
+A Z
+A Z
+A Z
+A Y
+A X
+B Y
+A Z
+B Z
+B Y
+C Y
+C X
+C Y
+A Z
+B Z
+A Z
+A Y
+B X
+C Z
+A X
+A Z
+A Z
+A Z
+A Y
+A Y
+A Z
+A Y
+C X
+A Z
+A Y
+C X
+A Z
+A Z
+C Y
+A Z
+B Z
+A Y
+B Z
+B X
+B Z
+C X
+A Z
+A Z
+C X
+A Z
+A Z
+C X
+B Z
+B Z
+B Z
+A Z
+A Z
+B Y
+A Z
+A Z
+C Z
+C Z
+B Z
+A Z
+B Y
+A Z
+A Z
+C X
+B Z
+A Z
+A Z
+A Z
+C Y
+B Y
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+C X
+A Z
+C X
+A Z
+A Z
+C Y
+C X
+C X
+C X
+C X
+C X
+B Z
+B Z
+B Y
+B Y
+C Z
+A Z
+B Z
+A Z
+A X
+A Z
+A Z
+A Z
+C X
+A Z
+C X
+A Z
+A Z
+C X
+C X
+B Y
+A Z
+C Y
+A Z
+A Y
+C Y
+B Z
+B Y
+C X
+A Z
+C Y
+A Z
+A Z
+A Z
+B Y
+C X
+B Z
+B Z
+C X
+B Y
+B Z
+A Z
+C X
+A Z
+B Y
+B Z
+A Y
+A Z
+A Z
+A Z
+A Z
+C Y
+A Z
+C Y
+A Z
+B Y
+C X
+B Z
+A Z
+A Z
+B Z
+C X
+B Z
+A Z
+A Z
+A X
+B Y
+A Z
+A Z
+A Z
+A Z
+A Y
+B Z
+A Z
+A Z
+A Z
+B Z
+C Y
+C X
+C X
+B Z
+A Z
+B Z
+C X
+A Y
+C X
+B Y
+B Z
+C Y
+B Y
+B Y
+A Y
+C Y
+A Z
+A Z
+B Z
+B Z
+A X
+A Z
+A Z
+B Z
+A Z
+B Z
+A X
+A Z
+A Y
+A Y
+A Z
+B Z
+A Z
+B Z
+A Z
+B Z
+C X
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+C X
+B Y
+A X
+B Z
+B Z
+C Y
+A Z
+A Z
+C X
+B Y
+C X
+A Z
+A X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+B Z
+B Z
+C X
+A Y
+C Z
+A Y
+A Z
+C Y
+A Z
+A Z
+A Y
+A Z
+C X
+C Z
+A Z
+A Y
+A Z
+A X
+A Y
+A Z
+C X
+B Z
+A Z
+B Z
+C Y
+C X
+A Z
+A Z
+A X
+A Z
+B Z
+C X
+A Z
+B Y
+A Z
+A X
+A Z
+B Z
+A Z
+A Z
+C X
+B Z
+B X
+A Z
+A Z
+C Z
+A Z
+A Z
+A Y
+B Z
+A Z
+C X
+B Z
+A Z
+C Y
+A Z
+B Z
+B Z
+A Z
+A Z
+C X
+B Z
+C Y
+A Y
+A Y
+B Z
+A Z
+A Z
+C Z
+B Z
+A Y
+A Y
+C Z
+C Z
+A Z
+B Z
+B Y
+A Z
+B Y
+A Z
+A Z
+A Z
+C Y
+A Y
+A Z
+A Z
+A Z
+A Z
+C Z
+A Z
+B Y
+A Z
+B Z
+C Y
+A Z
+B Y
+B Z
+A Z
+A Y
+A Z
+A Z
+B Z
+A Z
+A Z
+A Z
+C Z
+B Z
+C X
+B Z
+A Z
+A Z
+A Y
+A Z
+A Z
+A Z
+A Z
+C Y
+A Z
+A Z
+A Z
+A X
+A Y
+B Y
+C X
+A Z
+A Z
+B Y
+A Z
+C X
+A Y
+A Z
+A Z
+C X
+A X
+A Z
+A Z
+A Z
+B Y
+B Z
+A X
+A Z
+C X
+A Z
+C X
+B Z
+B Y
+A Z
+B Y
+A Y
+A Z
+A Y
+A Z
+B Y
+C X
+B X
+B Y
+C X
+A Z
+A Z
+A Y
+A Z
+A Y
+B Z
+B Y
+B Y
+A Y
+A X
+A Z
+C X
+A Z
+B X
+A Z
+A Z
+C X
+B Y
+B Z
+B Z
+B Y
+B Z
+A Y
+C X
+C Z
+A Z
+A Y
+B Y
+B Y
+A Z
+A Y
+C Y
+B Y
+B Z
+A Z
+A Y
+A Z
+B Z
+A Z
+A Z
+A Z
+A Z
+B Z
+A Y
+C X
+A Z
+A Z
+B Y
+A Z
+B Y
+B Z
+A Z
+C X
+A Z
+C X
+B Y
+A Z
+B Z
+C X
+A Z
+A Z
+A Z
+C X
+C X
+A Z
+A Z
+A Z
+B Y
+A Z
+A Z
+A Z
+A Z
+A Z
+A Y
+B Z
+C Y
+A Y
+C X
+A Z
+A Z
+B Y
+B X
+A Z
+C Z
+A Z
+A Y
+A Z
+A X
+A Z
+A Z
+A Z
+C Z
+C X
+C X
+B Y
+C X
+C X
+B Y
+C Z
+C X
+C X
+A Y
+A Z
+C X
+C Z
+B Y
+A Z
+C X
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+A Y
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+C X
+C X
+C X
+A Z
+A Z
+B Z
+A Y
+A Z
+A Z
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+C X
+A Z
+A Z
+C X
+C Z
+C Z
+A Z
+A Z
+B Y
+B Z
+A Z
+A Z
+B Y
+B X
+C X
+B Y
+C X
+C X
+A Z
+C X
+C X
+C Y
+C X
+C X
+C X
+B Z
+B Z
+A Z
+A Z
+B Z
+A Z
+C X
+A Z
+B Y
+A Y
+A Z
+C Z
+B Y
+B Z
+B Z
+A Z
+C X
+B Z
+A X
+B Y
+A Y
+B Y
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+C X
+B Z
+A Z
+B Y
+A Z
+B Z
+A Z
+B Y
+A Z
+A X
+A Z
+B Y
+B Y
+A Y
+C X
+A Z
+A Z
+C Y
+A Z
+A Z
+B Z
+C Z
+B Z
+A Z
+A Z
+C X
+C Y
+B Z
+A Z
+C X
+A Z
+C X
+B Y
+C X
+B Z
+A Z
+A Z
+C X
+A Z
+C X
+A Y
+C X
+C X
+C Y
+B Z
+C X
+B Z
+C X
+A Z
+A Z
+C X
+A Y
+B Z
+C X
+B Z
+C X
+A Z
+C X
+C X
+A Z
+A Z
+B Y
+C Z
+A X
+A X
+A Z
+C X
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+A Z
+A Z
+B Z
+C X
+B Y
+A Z
+A Z
+B Y
+A Z
+A Z
+A Z
+A Z
+B Y
+A Z
+B Z
+A Y
+A Y
+A Y
+A Z
+A Y
+A Z
+B Z
+A Z
+B Y
+A Z
+C X
+A Y
+C X
+A Z
+B Y
+A Y
+A Z
+A Y
+A Z
+C Z
+A Z
+B Z
+A Z
+C X
+B Z
+A Z
+A Z
+C X
+B Y
+A Z
+C X
+C Y
+A Z
+B Y
+A Z
+B X
+B Y
+B Y
+C Z
+C X
+A Z
+C X
+A Y
+A Y
+B Z
+A Z
+C X
+B Z
+A Z
+A Z
+A Y
+C X
+C X
+A Z
+A X
+B Z
+A Z
+A Z
+A X
+A Z
+C X
+A Z
+B Y
+A Z
+B X
+B Y
+A Y
+C X
+A Z
+A X
+A X
+A Y
+B Y
+A Y
+A Z
+C X
+B Z
+A Z
+A X
+A X
+A Z
+C X
+B Z
+C X
+B Y
+A Z
+C X
+A Y
+A Z
+A Z
+A Z
+A Z
+C Z
+B Z
+C Z
+A Z
+A Z
+C X
+B Y
+A Y
+B Z
+C X
+B Z
+A Z
+A Z
+A Z
+A X
+B Y
+C X
+B Y
+B Z
+B Z
+A Z
+A Y
+C Y
+A Y
+A X
+A Z
+C X
+A Z
+A Z
+A X
+A Z
+A Z
+C X
+A Z
+A X
+A Z
+C Y
+A Z
+B Z
+A Y
+A Z
+C Z
+A Y
+A Y
+B Z
+A Y
+A Y
+A Y
+A Z
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Y
+B Z
+A Y
+A Z
+C X
+A X
+B Z
+A Z
+A X
+C Y
+B Y
+B Y
+B Z
+C X
+C X
+A Z
+A Z
+C X
+C X
+A Z
+A X
+A Z
+A Z
+A Z
+A X
+C X
+C X
+A Z
+A Y
+A Z
+A Z
+A Z
+A Z
+C Z
+A Z
+C X
+B Z
+C Z
+C X
+A Z
+B Y
+C X
+C X
+B Z
+C X
+B Y
+A Y
+B X
+A Z
+A Z
+A Z
+B Z
+C X
+A X
+B Z
+A X
+A Z
+C Z
+B Z
+A Z
+A Z
+C X
+C X
+A X
+C X
+C Y
+A Z
+A Z
+A Z
+B Z
+C Z
+A Z
+A Z
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+C X
+B Y
+A Z
+B Z
+A Z
+C X
+A Z
+A Z
+A Z
+B Z
+C X
+B Y
+A Z
+A Z
+A Z
+C Y
+A Z
+A Z
+C X
+C X
+A Y
+B Z
+A Z
+C Y
+C X
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+B Z
+B Z
+A Z
+A Z
+A Z
+C X
+C X
+A Z
+B Z
+A X
+B Y
+C X
+C X
+C X
+A Z
+C X
+A Z
+A Z
+B Y
+A Y
+B Z
+B Z
+A Z
+A Z
+C Z
+A Y
+A Y
+A Z
+A Z
+C X
+C Z
+A Z
+A Z
+A Z
+A Z
+C Y
+B Y
+B Y
+C Y
+A Z
+C X
+B Z
+A X
+A Y
+B Z
+A Z
+A Z
+A Z
+A X
+A Z
+A Z
+A Z
+A Y
+C Z
+A Y
+C X
+A Y
+A X
+C X
+A Z
+B Y
+A Y
+B Y
+A Z
+C X
+C Z
+A Z
+C Z
+A Y
+A Z
+A Z
+B Z
+B X
+B Z
+B Z
+B Y
+C Z
+C X
+A X
+C Z
+B Z
+A Z
+A Z
+B Z
+A Y
+A Z
+B Y
+C X
+A Z
+B Z
+C X
+A X
+B Z
+A Z
+A Z
+C X
+C X
+C X
+B Z
+C Z
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+C Z
+C X
+A X
+B Y
+A Z
+C X
+C Z
+A Z
+C X
+B Z
+B Y
+A Z
+C X
+A Z
+B Z
+C Z
+A Z
+A Z
+A X
+B Y
+C X
+A Z
+C X
+A Z
+A X
+C X
+A Z
+C X
+A Y
+A Z
+C X
+C Z
+C Y
+B Z
+B Z
+A Y
+B Z
+A Z
+A Z
+A Y
+A Z
+C X
+C X
+A Z
+A Z
+C X
+B Z
+A Z
+B Y
+A Z
+A Z
+A Z
+C X
+A Z
+A Y
+B Y
+A Z
+C X
+A Z
+A X
+A Z
+A Z
+C X
+C Y
+A Z
+C X
+A Z
+A Y
+C X
+B Z
+C Z
+B Y
+A Z
+A Z
+B Y
+A Z
+B Y
+A Z
+A Z
+A Z
+C X
+A Y
+C X
+A Z
+C Y
+A Z
+A Z
+A Z
+B Y
+B Z
+B Z
+C Z
+A X
+A Z
+A Z
+C X
+A Z
+C X
+A Z
+A X
+C Z
+C X
+A Z
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+C Y
+A Y
+A Z
+C Y
+C Y
+A Z
+B Z
+A Z
+B Z
+A Z
+B Z
+C Y
+C X
+C X
+A Y
+A Z
+B Z
+C X
+A X
+A Z
+A Z
+A Y
+A Z
+A Z
+A Z
+C X
+C X
+A Y
+A Z
+A Z
+C X
+B Z
+B Y
+A Y
+A Z
+B Z
+A Z
+A Z
+A X
+A Z
+A Z
+B Y
+A Z
+A Y
+B Z
+C X
+A Z
+A Z
+A Z
+C X
+A Z
+B Z
+B Z
+A Z
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+A Z
+A Z
+C X
+C X
+A Z
+B X
+A Z
+B Y
+C Z
+A Z
+A Z
+A Z
+C Z
+A Z
+B Y
+A X
+A Z
+C Z
+A Z
+C Z
+A Z
+C X
+A Y
+C X
+C Z
+A Y
+A Z
+A Z
+C X
+C X
+A Z
+A Z
+A Z
+B Z
+B Z
+A Y
+B Y
+C Z
+B Z
+B X
+A Z
+A Z
+A Z
+C X
+B Y
+A Z
+B Z
+C X
+A Z
+A Z
+C X
+C X
+A Z
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+B Z
+A Y
+A Z
+B Y
+A Z
+A Z
+A Z
+B Z
+A Z
+A Z
+C X
+B Y
+C X
+A Y
+C X
+A Z
+A Z
+A Z
+C X
+B Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Y
+C X
+B Y
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+B Y
+A Z
+C X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+A Z
+C X
+A Y
+B Z
+A Z
+C X
+A Z
+C X
+B Z
+B Z
+A Z
+A Z
+A Z
+C X
+A Z
+B Z
+B Y
+C X
+C X
+C X
+B Z
+A X
+A Y
+A Z
+A Z
+A Z
+A Y
+A Z
+A Z
+A Y
+A X
+A Y
+C X
+A Y
+C X
+B Z
+B Y
+C X
+B Y
+B Y
+C X
+A Z
+A Z
+B Z
+C X
+A Z
+A Z
+B Y
+A Z
+B Y
+A Z
+A X
+C Y
+C X
+B Z
+C X
+A Z
+A Z
+A Z
+C X
+A Z
+C X
+A X
+A Y
+A Z
+A Z
+C X
+A Y
+A Z
+B X
+A Y
+A Z
+A Z
+A Z
+A Z
+A Z
+A Z
+C X
+A Z
+C X
+A Z
+C Y
+A Z
+A Z
+B Z
+A Y
+A Z
+B Y
+B Y
+A Z
+C X
+A Z
+C X
+C Z
+A Z
+B Z
+B Z
+A Z
+A Z
+C X
+C X
+B Y
+A Z
+A Z
+B Z
+C Z
+B Y
+B Y
+C X
+A Z
+A Z
+B Y
+A Z
+C X
+C Z
+A Z
+B Z
+C X
+A Y
+C X
+A Z
+B Y
+B Y
+A Y
+A Z
+A Z
+A Z
+A Z
+A Z
+A Y
+A Z
+A Y
+A Z
+B Y
+B Y
+B Y
+C X
+A Z
+A Z
+A Y
+A Z
+A Z
+C X
+A Y
+C X
+A Z
+A Z
+A Z
+B Y
+A Z
+A Z
+B Z
+C X
+A Z
+B Y
+B Y
+C X
+C Z
+B Y
+A Z
+A Z
+A Z
+C X
+A Z
+B Z
+C Z
+C X
+B Y
+A Z
+A Z
+A Y
+A X
+A Z
+A Z
+A Z
+A Z
+A Z
+A Y
+B Y
+A Z
+B Z
+B Z
+A Z
+C Y
+A X
+A Z
+A Z
+C X
+C X
+C Y
+B Y
+B Y
+B X
+A Z
+A Z
+B Z
+A Z
diff --git a/AoC2022/02/makefile b/AoC2022/02/makefile
new file mode 100644
index 0000000..e358a2c
--- /dev/null
+++ b/AoC2022/02/makefile
@@ -0,0 +1,13 @@
+##
+# run solutions
+#
+# @file
+# @version 0.1
+
+
+
+# end
+
+run:
+ emacs -batch -l ert -l solver.el -f ert-run-tests-batch-and-exit
+ # sbcl --load ~/.sbclrc --script solver.lisp
diff --git a/AoC2022/02/solver.el b/AoC2022/02/solver.el
new file mode 100644
index 0000000..18fe64e
--- /dev/null
+++ b/AoC2022/02/solver.el
@@ -0,0 +1,55 @@
+;;; solver.el --- Second day -*- lexical-binding: t; -*-
+;;
+;; Copyright (C) 2022 Óscar Nájera
+;;
+;; Author: Óscar Nájera <hi@oscarnajera.com>
+;; Maintainer: Óscar Nájera <hi@oscarnajera.com>
+;; Created: December 02, 2022
+;; Modified: December 02, 2022
+;; Version: 0.0.1
+;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex tools unix vc wp
+;; Homepage: https://github.com/titan/solver
+;; Package-Requires: ((emacs "25.1"))
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; Commentary:
+;;
+;; Second day
+;;
+;;; Code:
+
+(require 'seq)
+(require 'ert)
+
+(defun solver-translate (play)
+ (pcase play
+ ((or ?A ?X) 'rock)
+ ((or ?B ?Y) 'paper)
+ ((or ?C ?Z) 'scissors)))
+
+(defun solver-weight (play)
+ (pcase play
+ ('rock 1)
+ ('paper 2)
+ ('scissors 3)))
+
+(defun solver-result-a (a b)
+ (pcase (list a b)
+ ((or '(rock scissors)
+ '(scissors paper)
+ '(paper rock)) 6)
+ (`(,c ,c) 3)
+ (_ 0)))
+
+(should (= 12535
+ (with-temp-buffer
+ (insert-file-contents "input")
+ (seq-reduce
+ (lambda (acc game)
+ (let ((oponent (solver-translate (aref game 0)))
+ (my-game (solver-translate (aref game 2))))
+ (+ acc (solver-weight my-game) (solver-result-a my-game oponent))))
+ (split-string (buffer-string) "\n" t)
+ 0))))
+