From 7963aeb90f43207b47cadc4a996462383cd74fc4 Mon Sep 17 00:00:00 2001
From: Oscar Najera <hi@oscarnajera.com>
Date: Fri, 2 Dec 2022 15:57:51 +0100
Subject: [AoC2022] 02-01 elisp

---
 AoC2022/02/input     | 2500 ++++++++++++++++++++++++++++++++++++++++++++++++++
 AoC2022/02/makefile  |   13 +
 AoC2022/02/solver.el |   55 ++
 3 files changed, 2568 insertions(+)
 create mode 100644 AoC2022/02/input
 create mode 100644 AoC2022/02/makefile
 create mode 100644 AoC2022/02/solver.el

(limited to 'AoC2022/02')

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))))
+
-- 
cgit v1.2.3