diff --git a/advent-of-code-2022.csproj b/advent-of-code-2022.csproj
index 7032e57..7acf192 100644
--- a/advent-of-code-2022.csproj
+++ b/advent-of-code-2022.csproj
@@ -73,6 +73,8 @@
+
+
diff --git a/inputs/02.txt b/inputs/02.txt
index 36084d3..d86ab0b 100644
--- a/inputs/02.txt
+++ b/inputs/02.txt
@@ -1,1000 +1,2500 @@
-forward 9
-down 9
-up 4
-down 5
-down 6
-up 6
-down 7
-down 1
-forward 6
-down 4
-forward 8
-up 5
-forward 9
-down 1
-down 4
-up 4
-up 5
-up 4
-down 1
-forward 8
-down 1
-forward 2
-forward 8
-down 9
-forward 2
-down 6
-down 2
-up 8
-down 6
-forward 9
-forward 7
-down 6
-forward 3
-down 2
-forward 4
-down 5
-up 2
-down 9
-down 8
-up 5
-forward 5
-forward 4
-up 9
-forward 9
-down 8
-forward 8
-forward 2
-up 8
-down 7
-forward 8
-down 3
-forward 6
-up 9
-forward 9
-forward 4
-forward 9
-forward 6
-down 4
-up 2
-forward 4
-up 5
-up 6
-forward 9
-down 3
-forward 4
-forward 9
-down 1
-forward 1
-up 6
-up 4
-forward 7
-up 7
-up 3
-forward 2
-forward 8
-forward 6
-down 4
-forward 2
-forward 3
-down 7
-down 5
-down 8
-down 5
-forward 1
-down 8
-down 2
-down 8
-down 3
-forward 4
-forward 8
-forward 9
-down 1
-forward 8
-down 1
-down 6
-down 7
-down 7
-forward 5
-forward 3
-down 2
-down 1
-forward 2
-forward 1
-down 6
-down 4
-up 5
-up 9
-down 4
-forward 9
-down 2
-down 5
-down 4
-down 2
-forward 2
-forward 4
-forward 6
-forward 6
-forward 3
-down 6
-up 5
-forward 8
-forward 3
-down 9
-down 3
-forward 4
-forward 2
-down 9
-down 8
-down 7
-down 3
-forward 2
-down 7
-down 3
-down 5
-forward 6
-up 9
-up 8
-forward 5
-down 6
-down 1
-down 6
-down 5
-forward 7
-down 2
-forward 8
-forward 7
-forward 2
-forward 8
-up 6
-forward 5
-down 2
-down 5
-up 8
-up 6
-forward 1
-down 4
-up 5
-up 5
-up 5
-forward 4
-up 1
-forward 3
-down 9
-down 6
-up 1
-forward 1
-forward 2
-forward 1
-forward 4
-forward 6
-forward 6
-up 7
-down 7
-down 7
-down 9
-forward 9
-down 1
-down 5
-down 1
-down 7
-down 1
-up 6
-forward 2
-down 4
-up 3
-up 2
-forward 6
-up 4
-down 1
-down 5
-forward 9
-up 4
-up 3
-forward 3
-up 7
-forward 2
-forward 5
-down 9
-forward 7
-forward 4
-down 1
-up 2
-forward 4
-up 4
-down 2
-forward 4
-up 5
-up 1
-down 9
-down 3
-up 6
-forward 7
-up 7
-forward 2
-down 4
-up 3
-up 3
-forward 4
-up 5
-down 3
-up 8
-forward 6
-forward 8
-down 1
-down 9
-down 7
-forward 7
-forward 5
-forward 2
-up 9
-forward 3
-forward 1
-down 7
-down 6
-forward 5
-up 3
-forward 6
-down 4
-forward 9
-down 7
-forward 9
-down 9
-down 5
-down 6
-down 2
-down 2
-down 8
-down 3
-down 9
-forward 5
-up 6
-forward 1
-down 3
-down 2
-up 1
-up 6
-forward 3
-down 6
-down 6
-up 9
-up 8
-forward 2
-down 7
-forward 5
-up 9
-down 7
-down 3
-forward 2
-forward 2
-up 9
-forward 1
-forward 7
-down 9
-forward 6
-forward 7
-up 8
-down 7
-down 5
-down 3
-up 6
-down 5
-forward 6
-down 9
-down 6
-up 9
-down 7
-forward 2
-down 5
-up 4
-down 4
-down 8
-forward 7
-down 9
-forward 8
-forward 6
-down 7
-down 1
-forward 5
-up 6
-forward 4
-up 7
-up 4
-up 5
-forward 9
-forward 5
-forward 4
-down 6
-down 5
-forward 2
-forward 7
-down 8
-forward 3
-up 5
-down 2
-up 3
-forward 4
-up 5
-up 2
-forward 4
-forward 1
-forward 1
-forward 4
-forward 4
-down 2
-forward 1
-forward 1
-up 5
-up 7
-down 8
-down 4
-forward 2
-forward 2
-down 3
-forward 7
-down 8
-up 3
-forward 2
-down 2
-forward 3
-up 2
-forward 3
-up 6
-down 7
-up 7
-down 3
-up 9
-forward 3
-forward 7
-down 7
-up 9
-down 6
-down 2
-forward 8
-forward 8
-up 7
-down 6
-forward 2
-forward 1
-down 4
-up 2
-forward 6
-up 7
-down 5
-up 1
-forward 3
-forward 9
-up 4
-forward 5
-forward 8
-down 3
-up 5
-forward 9
-down 6
-up 9
-forward 5
-down 4
-down 1
-down 6
-up 9
-up 2
-forward 5
-down 1
-up 3
-down 5
-forward 2
-down 4
-forward 5
-down 6
-down 4
-down 4
-forward 1
-down 7
-down 2
-forward 4
-forward 5
-up 9
-down 6
-down 2
-forward 7
-up 8
-down 9
-forward 7
-down 5
-down 2
-down 8
-down 8
-up 4
-up 3
-down 3
-down 7
-forward 4
-forward 6
-down 4
-up 7
-forward 4
-forward 4
-forward 1
-down 3
-down 2
-forward 7
-forward 2
-up 9
-down 7
-up 7
-forward 2
-forward 6
-forward 9
-down 3
-forward 7
-forward 5
-up 5
-up 1
-forward 6
-forward 4
-down 2
-forward 3
-forward 9
-down 1
-forward 6
-forward 7
-forward 1
-up 7
-up 4
-forward 7
-forward 8
-down 7
-down 8
-down 9
-forward 7
-down 9
-up 6
-down 7
-up 3
-down 7
-forward 4
-forward 9
-forward 1
-down 4
-forward 1
-up 4
-up 4
-forward 9
-forward 8
-up 4
-down 2
-forward 4
-forward 2
-forward 8
-down 2
-up 6
-down 4
-forward 6
-forward 5
-down 2
-forward 9
-down 5
-forward 5
-down 3
-down 2
-up 9
-down 3
-forward 6
-forward 6
-up 9
-down 1
-forward 4
-up 3
-forward 1
-forward 3
-forward 3
-down 6
-down 2
-forward 8
-down 4
-forward 8
-forward 8
-forward 5
-up 6
-forward 3
-down 1
-down 8
-forward 3
-forward 4
-down 2
-down 7
-up 8
-forward 3
-forward 8
-up 2
-forward 6
-down 4
-forward 9
-forward 5
-down 1
-forward 6
-forward 2
-down 3
-up 4
-down 7
-down 2
-up 2
-forward 7
-down 6
-down 2
-up 5
-up 5
-down 9
-down 7
-down 3
-down 1
-down 9
-forward 4
-down 4
-forward 7
-forward 8
-forward 4
-up 6
-forward 6
-forward 9
-down 2
-forward 4
-down 8
-down 4
-forward 5
-forward 2
-up 4
-down 3
-up 8
-up 1
-down 1
-forward 9
-up 3
-up 1
-forward 1
-forward 7
-forward 1
-down 7
-forward 7
-forward 7
-down 7
-forward 4
-up 6
-forward 3
-down 1
-up 1
-up 8
-forward 5
-forward 2
-up 4
-forward 7
-down 2
-down 3
-down 8
-up 7
-up 5
-forward 8
-down 5
-down 3
-down 9
-forward 6
-forward 4
-down 9
-up 5
-forward 3
-up 7
-up 9
-up 1
-forward 1
-forward 3
-forward 1
-up 8
-up 4
-down 1
-down 8
-down 3
-down 1
-down 1
-down 9
-forward 4
-down 3
-forward 9
-forward 2
-down 1
-forward 9
-up 7
-forward 6
-up 4
-forward 8
-forward 3
-down 2
-down 2
-down 2
-up 5
-forward 1
-up 1
-forward 7
-down 1
-forward 1
-down 8
-up 4
-up 1
-forward 7
-down 8
-down 9
-forward 2
-forward 1
-up 3
-forward 4
-up 8
-forward 5
-down 2
-forward 6
-forward 8
-up 9
-forward 2
-down 7
-down 4
-up 3
-forward 1
-forward 6
-forward 9
-down 1
-down 8
-down 1
-down 2
-forward 3
-forward 9
-forward 2
-forward 4
-forward 7
-forward 3
-up 8
-up 9
-forward 3
-forward 6
-down 5
-up 6
-down 8
-forward 5
-up 4
-up 9
-forward 6
-forward 3
-up 9
-forward 8
-forward 5
-forward 9
-forward 7
-up 6
-forward 3
-forward 1
-up 4
-forward 9
-forward 8
-up 1
-up 2
-down 3
-down 4
-down 9
-down 4
-down 5
-down 6
-down 2
-down 5
-forward 6
-forward 4
-up 2
-up 7
-down 5
-down 9
-forward 3
-down 5
-forward 6
-down 7
-forward 1
-forward 7
-forward 9
-forward 7
-forward 4
-forward 4
-up 1
-up 4
-down 6
-up 2
-up 1
-down 4
-forward 2
-down 4
-forward 6
-down 3
-up 6
-down 2
-up 3
-forward 1
-forward 9
-forward 3
-up 9
-forward 7
-forward 5
-forward 4
-down 5
-down 9
-forward 6
-forward 7
-up 1
-forward 7
-forward 2
-forward 2
-forward 5
-forward 6
-down 3
-down 7
-down 3
-down 4
-down 6
-down 1
-forward 2
-down 8
-forward 4
-forward 7
-up 1
-down 4
-down 1
-down 2
-down 3
-up 3
-forward 9
-forward 2
-down 8
-up 3
-forward 8
-forward 7
-up 8
-down 8
-forward 2
-down 9
-down 9
-down 5
-forward 1
-forward 3
-forward 6
-up 1
-up 2
-forward 1
-down 3
-up 6
-forward 2
-forward 8
-forward 2
-down 3
-forward 8
-forward 9
-down 7
-down 3
-down 2
-down 9
-down 3
-up 6
-forward 9
-forward 5
-forward 1
-forward 9
-down 9
-up 2
-down 1
-up 6
-forward 6
-down 3
-forward 6
-forward 3
-forward 5
-forward 4
-up 2
-up 4
-up 6
-forward 1
-forward 6
-up 6
-up 4
-up 7
-down 8
-down 5
-up 1
-up 1
-down 5
-forward 5
-down 9
-forward 8
-down 3
-up 4
-down 9
-down 1
-forward 2
-forward 9
-down 3
-down 8
-down 5
-down 6
-forward 7
-forward 1
-down 9
-down 7
-forward 8
-forward 2
-up 1
-up 1
-forward 7
-up 1
-forward 2
-down 9
-up 4
-forward 5
-down 1
-up 1
-down 8
-down 3
-up 1
-down 8
-down 7
-down 2
-forward 9
-down 5
-forward 2
-up 2
-up 6
-up 4
-forward 6
-up 5
-forward 5
-forward 4
-forward 8
-down 8
-down 6
-down 1
-down 3
-down 6
-forward 8
-up 1
-up 5
-down 4
-forward 4
-down 9
-forward 4
-up 6
-down 7
-forward 4
-down 3
-down 4
-forward 1
-forward 3
-down 1
-down 7
-up 8
-down 3
-down 4
-down 3
-forward 3
-down 8
-forward 8
-down 3
-down 7
-forward 2
-up 2
-forward 7
-down 9
-up 7
-forward 5
-down 2
-down 5
-up 4
-up 8
-forward 8
-forward 9
-forward 8
-down 8
-forward 6
-forward 9
-forward 6
-forward 8
-forward 6
-forward 8
-forward 2
-down 7
-down 3
-forward 7
-down 4
-down 5
-up 1
-forward 5
-down 3
-down 7
-up 4
-forward 9
-down 2
-down 3
-forward 1
-up 6
-down 1
-down 9
-forward 8
-forward 9
-forward 2
-down 6
-down 4
-up 3
-up 8
-forward 1
-down 3
-up 8
-up 7
-down 4
-up 3
-down 7
-down 2
-down 5
-down 7
-down 2
-forward 2
-down 3
-up 2
-forward 8
-up 1
-forward 2
-up 4
-forward 1
-forward 8
-forward 6
-forward 2
-down 2
-forward 5
-up 4
-down 9
-down 7
-forward 2
-down 9
-down 9
-forward 6
-down 8
-down 4
-down 7
-down 9
-forward 7
-forward 7
-up 6
-forward 3
-forward 5
-forward 6
-down 8
-up 1
-forward 2
-up 4
-up 2
-down 8
-down 9
-down 1
-down 3
-forward 7
-forward 5
-forward 6
-up 6
-down 7
-up 8
-up 1
-forward 8
-down 5
-up 1
-down 2
-down 5
-forward 6
-down 4
-forward 5
-down 4
-forward 3
-down 5
-up 4
-up 7
-forward 2
-up 2
-down 8
-forward 6
\ No newline at end of file
+A Z
+A Z
+C Y
+A X
+A X
+A Z
+C X
+A X
+C Y
+A Z
+B Y
+B Y
+C X
+C Y
+C X
+B Y
+A Y
+C Y
+B Y
+B Z
+B Y
+C X
+A Z
+C Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Z
+B Y
+A Z
+B Y
+C Y
+B Y
+B Z
+C X
+B Z
+A X
+B Y
+B Z
+C Y
+A Z
+C Y
+A Z
+B Y
+C Y
+A Z
+A Z
+B Y
+C Y
+C X
+A Z
+B Z
+A Z
+B Y
+C X
+B Y
+B Y
+B Y
+A Y
+B Z
+C Y
+C X
+A Z
+B Y
+B Y
+B X
+A Z
+C X
+B Y
+B Y
+A Z
+A Z
+A X
+A X
+B Y
+C X
+A X
+A Z
+A Z
+B Y
+C Y
+B Z
+A X
+B Z
+A Z
+B Y
+A Z
+C Y
+A Z
+A X
+B Y
+C Y
+B Y
+A X
+B Z
+C Y
+B Y
+B Y
+A Z
+A X
+A X
+B Y
+C Y
+B X
+B Z
+C X
+B Y
+A Y
+B Y
+B Y
+B Y
+A X
+C Y
+A Z
+C Y
+C Y
+B Z
+B Y
+A Z
+A Z
+A Z
+B Y
+C Y
+B Z
+C X
+C Y
+B Z
+A X
+A Z
+C Y
+B Y
+C Y
+C Y
+C Y
+B Y
+B X
+B Y
+B Y
+C Y
+A X
+B Z
+B X
+C X
+B X
+C Y
+B Z
+B Y
+A X
+C Y
+C Y
+C X
+B Z
+B Y
+A Y
+B Z
+A Z
+B Y
+B Y
+B Z
+B Z
+C Y
+A Z
+A X
+A X
+C Y
+B Y
+A Z
+B Z
+A X
+A Z
+B Z
+C Y
+C Z
+A X
+A Y
+B Y
+C Y
+B Y
+C Y
+B Z
+B Y
+A Z
+C Y
+B Z
+B Y
+A Z
+A Y
+B Y
+B Y
+C Y
+A Z
+C Y
+B Y
+B Y
+A X
+A Z
+A Z
+B Y
+B Y
+B Z
+C Y
+C X
+B Z
+A Y
+B Z
+A X
+C X
+A Y
+B Z
+B Z
+A X
+C X
+C X
+A Z
+C Y
+A X
+A X
+C X
+A X
+B Z
+C Z
+B Z
+B Y
+B Y
+A Z
+A Z
+B Y
+A Z
+C Y
+C X
+B Y
+A X
+A X
+B Z
+C Y
+C Y
+A X
+B Z
+A X
+C X
+C X
+B Z
+C X
+B Z
+A X
+A Y
+A X
+A Z
+A X
+B Y
+C Y
+A X
+C Y
+A Z
+B Z
+A Z
+C Y
+A X
+A Z
+B Y
+A Z
+B Z
+B Z
+A Z
+B Z
+A X
+B Y
+B Z
+C X
+B Y
+B Y
+B Y
+B Y
+A X
+B Z
+B Z
+A Z
+A Z
+C Y
+B Y
+C X
+A X
+B Y
+B Y
+C X
+B Y
+A X
+C Y
+A Z
+B Y
+A Y
+B Z
+B Y
+A Z
+A X
+B Z
+C Y
+A Z
+C Y
+C X
+B Y
+B Z
+C X
+A Y
+B Z
+A Y
+B Z
+B Z
+B Y
+B Z
+C X
+B Y
+A X
+B Z
+A Z
+B Y
+A Z
+C Y
+C Y
+C X
+C X
+A X
+C X
+A X
+A X
+B Z
+B Y
+B Y
+B Y
+B Y
+C X
+C X
+A Z
+A Z
+C X
+C X
+C Y
+C Y
+C Y
+B Y
+A Z
+C Y
+B Z
+B Z
+B Y
+C X
+C X
+C Y
+C Y
+C X
+B Z
+B Z
+B Y
+C Y
+B Y
+A Z
+C Y
+A X
+B Y
+C Y
+C Y
+C Y
+B Y
+A Z
+B Y
+A X
+B Z
+C X
+A Z
+C X
+A Z
+B Z
+C Y
+C Y
+C Y
+C X
+B Z
+C X
+B Y
+B Z
+C X
+B X
+A Z
+B Z
+B Y
+C Y
+B Z
+C Y
+A X
+B Z
+C Y
+C Y
+B Z
+B Y
+C Y
+B Z
+C Y
+A Z
+C X
+C X
+C Y
+A Z
+C Z
+C Y
+B Y
+C Y
+B Y
+B Y
+B Z
+C X
+C X
+B Z
+B Z
+B Z
+A Z
+B Y
+B Y
+A X
+B Y
+C Y
+B Y
+C X
+C X
+B Y
+B Y
+A Y
+B Z
+B Y
+B Y
+C Y
+A Z
+C X
+A Y
+B Y
+B Z
+B Y
+A Y
+C Y
+A Y
+A Z
+B Y
+A Z
+C Y
+C Y
+B Y
+A Z
+B Y
+B Y
+A Z
+B Z
+B Y
+C X
+C Y
+B Z
+B Y
+B Y
+A Z
+C Z
+A Z
+A X
+C X
+B Z
+B Z
+C X
+C Y
+B Y
+B X
+A X
+C Y
+B Z
+B Y
+C X
+B Y
+A Z
+A Z
+A X
+C Y
+B Z
+B Y
+C X
+C X
+B Y
+A Z
+C Z
+B Y
+A Z
+C Y
+B Y
+C X
+A Z
+A Z
+A X
+C X
+A X
+C X
+C X
+A Z
+C X
+B Y
+A Z
+B Y
+B Y
+C Y
+C X
+A Z
+B Z
+B Y
+B Y
+A Y
+A Z
+B Y
+A Z
+B Z
+B Y
+C Y
+A Z
+B Y
+B Y
+B Y
+C Y
+C X
+A X
+A Z
+B Z
+B Y
+C Y
+B Z
+C X
+B Y
+C X
+A Z
+B Y
+B X
+B Y
+A Y
+A X
+A X
+C X
+C X
+B Y
+B X
+C Y
+A Z
+B Z
+C Y
+C Y
+B Y
+A Z
+C X
+A Z
+C Y
+B Z
+B X
+C X
+B X
+C X
+B Y
+C Y
+C Y
+B Z
+B Y
+B Z
+B Z
+A Z
+B Y
+A Y
+B Z
+C X
+C Y
+C X
+A Z
+B Z
+C Y
+B Y
+B Z
+C X
+B Y
+A Y
+A X
+A X
+C Y
+B X
+C X
+B Z
+A Z
+A Y
+B Z
+C X
+C X
+B Y
+A X
+B Z
+C Y
+B X
+B Z
+C Y
+B Y
+C Y
+B Z
+B Y
+B Z
+B Y
+C X
+B Y
+C X
+B Z
+B Z
+C X
+B Z
+A X
+B X
+B Y
+A X
+B Z
+C X
+B Z
+B Y
+B Y
+C X
+A Y
+B Z
+B Z
+B Y
+B Y
+B Z
+C Y
+B Z
+C Y
+C X
+A Z
+C X
+A X
+C Y
+B Y
+C X
+A Z
+B Y
+A Z
+A Z
+B X
+C Y
+B Z
+C Y
+B Y
+B Z
+A X
+B Z
+A X
+C X
+B Z
+B Y
+C X
+C Y
+C Y
+B X
+C X
+C X
+B Z
+C Y
+B Z
+B Y
+B Z
+C Y
+B Y
+C Y
+C X
+B Y
+B Y
+B Z
+A Z
+C X
+A Z
+B Y
+B Z
+A Z
+C Y
+A Z
+B Y
+A Z
+A Z
+C Y
+A Y
+B Y
+A Y
+C X
+B Y
+C X
+B Z
+C Y
+A Z
+C X
+C X
+B Z
+C Z
+C Z
+B Y
+B Y
+C Y
+C Y
+A Z
+C Y
+C Y
+C Y
+A Z
+B Z
+C Y
+B Y
+C Y
+C X
+C X
+B X
+B Y
+C Y
+A Y
+B Y
+B Z
+B Y
+A Y
+B Y
+B X
+C X
+C Z
+C Y
+C Y
+C Y
+B Z
+B X
+C Y
+B Z
+C X
+C Y
+A Z
+A Y
+B Y
+C X
+A Z
+B Y
+C Y
+B Z
+A Z
+A Z
+B Y
+A Z
+C Y
+A X
+C Y
+B Z
+B Z
+B Z
+B Y
+B Y
+A Z
+A Z
+B Y
+C X
+A Z
+C Y
+B Y
+A Z
+C Y
+A Z
+B Z
+B Z
+A Y
+B Y
+B Y
+B Z
+C Z
+B Y
+B X
+B Y
+C X
+B Z
+C Y
+B Z
+A Y
+B Z
+A Z
+A X
+A Z
+C X
+C X
+B Y
+C X
+C Y
+A Z
+B Z
+B Y
+A Z
+B Z
+B Z
+B Z
+C Y
+B Y
+A X
+C Y
+C Y
+C X
+A X
+C Y
+B Y
+C X
+B Z
+A Y
+B X
+B Y
+A Z
+B Y
+B Y
+B Y
+B Z
+C X
+B Z
+B Z
+C X
+B Y
+A Y
+B Y
+C Y
+A Z
+C Z
+B Y
+B Z
+B Z
+C Y
+A Z
+C Y
+C X
+C Y
+B Y
+A X
+A X
+B Z
+C Y
+B Z
+B Y
+A Y
+C X
+A Z
+B Z
+C Y
+C Z
+C X
+B Y
+C X
+A Y
+A Y
+B Z
+C X
+B X
+C X
+B Y
+B Z
+B Z
+B Y
+C Y
+B Y
+B Y
+A Z
+B Z
+B Y
+C X
+B Z
+B Y
+B Y
+C Y
+C Z
+C X
+B Y
+A X
+C Y
+C X
+B Z
+C Y
+A X
+B Y
+A Y
+B Y
+C X
+C Y
+C X
+A X
+B Z
+C X
+B Y
+A Z
+C X
+B Y
+A Z
+B Y
+B Y
+B Y
+A Z
+A X
+C X
+C Y
+C Y
+B Y
+B Y
+B Z
+A Y
+C X
+C X
+B Y
+B Y
+B Z
+A X
+C X
+C X
+B X
+A X
+B Z
+B Y
+C X
+A X
+B Y
+C Y
+A X
+B Y
+C X
+B Z
+C Z
+B X
+C Y
+B Y
+C Y
+A Z
+C Y
+B Z
+C X
+B Z
+C X
+C Y
+C X
+C Y
+C Z
+C X
+C X
+B Y
+C Y
+C X
+C X
+B Z
+B Z
+A X
+C Y
+C Z
+B Y
+C Z
+C Y
+C X
+C X
+B Y
+C Y
+A Y
+B Y
+A Y
+B Y
+B Y
+B Y
+C Y
+C Z
+B Y
+C X
+C X
+B Z
+B Y
+B Z
+C Y
+B Z
+C X
+B Z
+B Y
+B Y
+A Z
+A X
+B X
+A X
+C X
+C Y
+B Y
+A X
+B Z
+B Y
+B Y
+A X
+C X
+C X
+B Y
+B Y
+C Y
+C Y
+B Z
+B Y
+B Y
+B Y
+C Y
+A X
+B Y
+C Y
+B Z
+B Y
+B Y
+B Z
+B Y
+B Y
+B Z
+B Y
+B Y
+C Y
+A Z
+B Z
+A Y
+B Y
+C Y
+B Z
+B Y
+B Y
+C X
+A X
+C Z
+C X
+B Y
+B Z
+C Y
+C X
+B Z
+A Z
+A Z
+C Y
+A Z
+B Y
+B Y
+B Z
+B Y
+C Y
+B Z
+C Y
+B Z
+B Z
+B Y
+C X
+B Y
+B Z
+A X
+C X
+C X
+B Z
+B Z
+C X
+B Y
+A Z
+B Y
+B Z
+C Y
+B Y
+A Z
+B Z
+B Y
+B Y
+B Y
+C X
+C Y
+A Z
+B Y
+B Y
+A Z
+A Z
+A Z
+A X
+B X
+A Z
+C Y
+C X
+A X
+B Z
+A X
+C X
+B Z
+B Y
+B Y
+C X
+A Z
+C Y
+C X
+A Y
+C X
+A Z
+B Z
+B Z
+B Y
+C Y
+B Z
+A Z
+A Z
+C Y
+B Y
+B Z
+A Z
+A Z
+B Z
+B Y
+A Z
+C Y
+A Z
+A Z
+B Y
+B Z
+B Z
+A X
+A X
+B Y
+B Z
+B Z
+C X
+B Z
+C Z
+B Y
+B Y
+B Y
+B Z
+A X
+A Z
+B Y
+A X
+B Y
+B Y
+C X
+C X
+C Y
+C Y
+A Z
+A X
+B Y
+A Z
+B Z
+B Y
+C X
+B Y
+B X
+C X
+A X
+A Z
+C Y
+C X
+C Y
+B Y
+B Y
+A X
+A Y
+B Y
+A Y
+C Y
+C X
+B Y
+B Y
+B Z
+C X
+C X
+B Y
+C X
+B Z
+C Y
+A X
+A Z
+A Z
+B Y
+A Y
+C Y
+C X
+C Y
+C Y
+B Y
+B Y
+A Z
+C X
+A X
+B Y
+B Y
+B Y
+B Z
+A Z
+B Y
+B Y
+A Z
+B Y
+A Z
+C X
+B Z
+C Y
+B Y
+B Y
+A X
+B Y
+A X
+B Y
+B Z
+C X
+B Z
+B Y
+C X
+C Y
+C Y
+A X
+A X
+B Z
+B Z
+B Y
+C X
+A Z
+C Y
+C Y
+C Y
+B Z
+B Z
+B Y
+A Z
+C Y
+A X
+A Z
+C Y
+B Z
+B Y
+B Y
+A Z
+B Y
+A Z
+C X
+A X
+B Z
+B Y
+B Y
+B Z
+A Z
+C X
+B Y
+C X
+B Z
+C X
+A Z
+B Y
+A Z
+A Z
+B Y
+C Y
+C X
+C Y
+A X
+C Y
+B Y
+B Z
+C X
+C Y
+A X
+B Z
+B Y
+C Y
+A X
+B Z
+A Y
+B Z
+B Y
+B Z
+A X
+A Z
+A X
+B Z
+C Y
+B Y
+A Y
+B Z
+A Z
+C Y
+C X
+B Z
+B Y
+C Y
+B Z
+C X
+C Y
+A X
+B Z
+B Z
+B Z
+B Z
+B Y
+C X
+B Y
+C X
+A Z
+A Z
+C Y
+A Y
+B Y
+C X
+A Z
+B Z
+C X
+C X
+A X
+B Y
+C X
+A Z
+B Y
+B Y
+B Y
+B Y
+C X
+C Y
+C Y
+B Y
+A Z
+B Y
+B Z
+B Z
+B Y
+A X
+B Z
+B Z
+C X
+C X
+C Y
+B Y
+C Y
+B Y
+B Y
+B Z
+B X
+C X
+C Y
+A Z
+B Z
+B Y
+A X
+B Z
+A Z
+B Z
+B Y
+B Y
+A Z
+C Y
+B Y
+C Y
+B Z
+B Y
+C X
+B Z
+B Z
+C Y
+C Y
+B Y
+C Y
+C X
+B X
+B Y
+C Y
+B Y
+B X
+C X
+B Y
+A Y
+A Z
+A Y
+B Z
+A Z
+A Z
+A Z
+B Y
+A Z
+A Z
+C Y
+B Z
+A Z
+A X
+B Y
+C Y
+C X
+C X
+A Z
+B Z
+B X
+B Z
+C X
+B Z
+C Y
+C X
+C Z
+C X
+B Z
+B Z
+B Z
+B Z
+A Z
+A Z
+C Y
+C Z
+C Y
+A X
+B Y
+B Y
+B Y
+A Z
+A Z
+B Z
+C Y
+C X
+B Y
+C X
+B Z
+B Y
+B Y
+B Y
+B Y
+B Y
+B X
+A Z
+A X
+A Y
+C X
+B Z
+B Y
+B Z
+C Y
+A Z
+B Z
+B Z
+C Y
+B Z
+B Z
+C X
+B Y
+C X
+B Z
+C X
+C Y
+C Y
+C X
+A Z
+A Z
+B Z
+B Y
+C X
+C X
+A Y
+A Z
+C X
+A X
+A X
+A Z
+C Y
+B Z
+B Y
+A Z
+B Y
+B Y
+B Z
+B Y
+C Y
+B Z
+A X
+B Y
+A X
+B Z
+A Z
+C X
+A X
+C Z
+A Z
+C Y
+A X
+B Y
+B Z
+B Z
+A X
+C Y
+A Z
+C X
+A Y
+C X
+B Y
+B Z
+A X
+B Y
+B Y
+A Y
+A X
+B Y
+C X
+A Y
+B Y
+B Y
+C Y
+A Z
+B Z
+A Z
+B Y
+A Z
+C Y
+C X
+B Z
+B Y
+B Z
+A X
+C Y
+C Z
+A X
+A X
+C Y
+C Y
+A Z
+C Y
+C X
+A Y
+C Y
+B Y
+B X
+B Y
+A Z
+C X
+C X
+B Y
+A Z
+A X
+B Z
+C X
+B Y
+B Y
+C Z
+A X
+A X
+B Z
+C X
+C Y
+B Z
+C Z
+B Y
+A Y
+A Z
+A Y
+C Y
+C Y
+C Y
+B Z
+B Z
+B Y
+B Y
+B Y
+B Z
+B Z
+C X
+A X
+C X
+B Y
+B Y
+B Y
+C Y
+B Y
+B Y
+C X
+A Y
+B Z
+C X
+B Z
+B Y
+A X
+C Y
+B Y
+C Y
+B Z
+B Y
+C Y
+C Z
+C Y
+A Y
+B Z
+A X
+B Z
+A Z
+A Z
+A Z
+B Y
+A X
+C Y
+B Y
+B Y
+B Y
+C X
+B Y
+A X
+C X
+B Y
+C X
+A Z
+B Z
+B Z
+B Y
+C Y
+B Y
+A Z
+B Y
+C Y
+B Z
+C X
+B Y
+B Y
+B Z
+C X
+C Y
+B Z
+B Z
+C Y
+C X
+C X
+B Y
+B Z
+A X
+C X
+A Z
+A Y
+B Z
+B Y
+B Y
+C Y
+C X
+B Y
+B Z
+C Y
+C Y
+C X
+C X
+B Z
+A Z
+B Z
+B Y
+C X
+A X
+C X
+A Z
+C X
+B Z
+C Z
+B Y
+C Y
+B Y
+C Z
+A Z
+B Y
+C Z
+A X
+B Z
+B X
+C Y
+C X
+B Z
+A Z
+B Y
+A X
+B X
+A Z
+C Y
+A Y
+A Z
+A X
+C X
+A Y
+C X
+B X
+B Y
+C Z
+A Z
+C X
+B Y
+C X
+C X
+B X
+B Y
+A Y
+B Y
+B Y
+A Z
+B Y
+C Y
+C X
+B Y
+B Y
+B Z
+C Y
+B Z
+A Z
+A Z
+A X
+B Y
+C Y
+B Y
+C Y
+C Y
+B Z
+A X
+C Y
+B Z
+C Y
+A Y
+B Y
+B Y
+B Y
+C Y
+A Z
+A Z
+B Z
+A Z
+C Y
+C Y
+B Y
+C X
+B Y
+A Z
+B Z
+A X
+B Z
+B Y
+B Z
+A X
+A X
+C Y
+A Z
+B Z
+C Y
+B Z
+C X
+B Z
+A X
+B Z
+B Z
+C Y
+B Y
+B Y
+C Y
+B Y
+A X
+B Y
+C Y
+A Z
+B Y
+C X
+A Z
+B Z
+A Z
+B Z
+C Y
+B Y
+B Y
+B Y
+C Y
+B Y
+B Y
+A Z
+B Y
+B Z
+C X
+B Z
+C X
+C X
+A X
+B Z
+C Z
+B Z
+A Y
+C X
+C X
+A Z
+A X
+A Y
+A X
+B Y
+B Y
+C X
+C Z
+A Y
+C Y
+B Y
+B Y
+C X
+C X
+B Z
+B Z
+B Y
+C Y
+A Z
+B Y
+C X
+C X
+A X
+A X
+A Y
+B Y
+C X
+A Z
+C Z
+C Y
+C Y
+C Y
+B Y
+C Y
+A Y
+A X
+B X
+B Y
+B Y
+B Y
+B Y
+A Z
+B Z
+B Y
+B Y
+C Y
+A X
+A Z
+A Z
+A Z
+B Y
+A X
+C Y
+C Y
+B Y
+B Y
+C Y
+A Z
+C Y
+A X
+C X
+B Z
+B Y
+C X
+B Y
+A X
+A Z
+C X
+C Y
+C Y
+C X
+C X
+B Z
+B Y
+A Z
+B Y
+B Z
+B Z
+B Y
+B Y
+A X
+C X
+C Y
+C X
+A Z
+B Z
+B Y
+B Y
+C Y
+A X
+A X
+C Y
+C X
+B Z
+A Y
+B Y
+B Z
+B Y
+A X
+C Y
+B Y
+A X
+C X
+B Y
+B Y
+A Z
+A Z
+A Z
+B Y
+B Y
+C X
+B Z
+A Z
+B Z
+A Z
+C X
+B Y
+C X
+B Y
+C X
+C X
+B Y
+B Y
+A Y
+C Y
+C Y
+B Z
+C X
+B Y
+B Y
+A X
+A Z
+B Y
+C Y
+B Y
+C Y
+A X
+C Y
+C Y
+B Z
+C Y
+A X
+C X
+A Z
+C Y
+A Z
+C X
+B Z
+B Y
+B Z
+C Y
+B X
+A Z
+C Y
+C X
+B Y
+C X
+B Z
+A X
+A Z
+C X
+B Z
+C X
+B Y
+A Z
+B Y
+C Y
+B Y
+C X
+C Y
+B X
+B X
+B Y
+B Y
+B Y
+B Z
+B Y
+C X
+A Z
+A Z
+C X
+B Y
+B Y
+B Y
+A Y
+C Y
+B Z
+C X
+C Y
+A X
+C Y
+B Z
+C Y
+B Y
+B Y
+B Z
+A Z
+A Z
+B Y
+A Y
+B Z
+A X
+C Y
+B Y
+A X
+C X
+B Y
+C Y
+B Z
+B Y
+C X
+A Z
+C Y
+A Z
+B Y
+C Y
+B Y
+C X
+A Z
+C Y
+C Y
+A Y
+B Z
+C X
+C X
+A Z
+C Z
+C X
+B Y
+C X
+A X
+C Y
+C X
+C X
+A X
+A Y
+A X
+C X
+A X
+A X
+B X
+B Y
+C Y
+A X
+B Z
+C X
+C Y
+B Y
+B Z
+C Y
+B Z
+B Y
+C X
+A X
+B Y
+B Z
+C Y
+A Z
+C X
+C Z
+A X
+A Z
+A Z
+B Z
+A Z
+B Y
+C Y
+C Y
+B Z
+C Y
+C Y
+C Y
+C X
+A X
+B Y
+A X
+C X
+C Z
+B Y
+A Z
+B Y
+C Y
+C Y
+B Z
+C Y
+C X
+B Z
+C Y
+B Y
+B Z
+A Z
+B Z
+B Z
+B Y
+A Z
+A Y
+C X
+B Y
+A Z
+C Y
+B Z
+A Z
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+C Y
+B X
+B Y
+A X
+A X
+B Z
+A X
+C Y
+A Z
+B Y
+B Y
+B Z
+A Z
+C Y
+C X
+B Y
+A Z
+A X
+B Y
+C X
+B Z
+A X
+C X
+B Z
+B Z
+B Z
+B X
+A X
+C Z
+C X
+C Z
+B X
+A Z
+C X
+B Y
+C X
+C Y
+C Y
+B Y
+B Z
+B Y
+C Y
+C X
+A Z
+C Y
+C Y
+C Y
+B Z
+A Z
+A Y
+C X
+C Y
+B Y
+C Y
+C Y
+B Z
+C Y
+B Y
+B Y
+C X
+B Z
+B Y
+A X
+B Y
+A Z
+B Y
+C X
+B Y
+C X
+B Y
+A Z
+C X
+B Y
+C X
+B Z
+C X
+B Y
+A X
+C X
+C X
+A X
+C Y
+A Z
+C Y
+B Z
+A Z
+A X
+C X
+A X
+C Y
+A X
+A X
+B Z
+C X
+C Y
+A Y
+B Z
+B Y
+C Y
+B Y
+A Y
+C Y
+C Y
+B Y
+B Y
+B Z
+B Z
+C X
+B Y
+C X
+A X
+A Z
+C Y
+B Z
+C Y
+B Y
+C X
+C X
+A Z
+B Z
+A Z
+C X
+B Y
+B Z
+C Y
+B Y
+A X
+A X
+B Y
+B Y
+B Y
+A X
+B Y
+B Z
+A Z
+A X
+A X
+B Z
+B Y
+A X
+B Z
+A Z
+B Y
+B Z
+B Z
+B Z
+C Y
+C Y
+A Z
+B Y
+C Y
+A Z
+C X
+B Z
+A X
+B X
+B Y
+B Y
+C Y
+C Y
+B Z
+B Y
+A Z
+B Y
+A X
+B Z
+B Y
+C Z
+B Y
+B Y
+C Y
+B Y
+B Y
+A Y
+C Y
+A Z
+A Y
+B Z
+C X
+B Z
+A X
+A Z
+A X
+C Y
+A Z
+B Y
+B Z
+B Z
+C Y
+C Y
+C Y
+B X
+B Y
+B Z
+A X
+B Y
+C Y
+A X
+A X
+B Y
+C Y
+A Y
+B Z
+B Z
+B Z
+A Z
+B Y
+C X
+A Z
+C Y
+C Y
+B Y
+C Y
+C Y
+C Y
+C Y
+B Y
+B Z
+A Z
+B X
+C Y
+C X
+C X
+C Y
+A Z
+C Y
+C X
+B Z
+B Y
+A Y
+C Z
+B Y
+B Y
+B Y
+B Y
+C Y
+B Y
+C Y
+A Z
+B Y
+C X
+C Y
+B Z
+A X
+C Y
+B Y
+B Y
+B Y
+A Z
+A X
+A X
+C X
+C Z
+B Z
+A X
+A Z
+A X
+A Y
+C Y
+C Y
+A Z
+C X
+C X
+B X
+B Y
+A X
+A Z
+A X
+C Y
+B X
+A X
+A X
+C X
+A Y
+B Z
+A Z
+B Y
+A X
+A Z
+B Y
+A Z
+C Y
+B Z
+A Z
+C Y
+C X
+B Z
+C Y
+B Y
+C X
+A Z
+B Z
+A X
+A X
+C Z
+A X
+C X
+B Y
+B Z
+A X
+A X
+C Y
+A Z
+C Y
+C X
+C Y
+B Z
+B Y
+C X
+C X
+B Z
+B Z
+C Y
+A X
+B X
+C X
+C Y
+A X
+A Z
+B Y
+C X
+A Y
+C X
+C Y
+A Z
+B Y
+B Z
+B Y
+C X
+C Y
+C X
+C X
+B Y
+C X
+C X
+B Y
+C Z
+C Y
+C Y
+B Z
+B Z
+B Y
+A X
+B Y
+A Z
+A Y
+B Y
+C Y
+B Z
+B Z
+A X
+B Y
+A X
+B Y
+A Z
+B Y
+C X
+A Z
+B Z
+C Y
+B Y
+A Y
+A X
+C X
+A X
+B Y
+B Z
+B Z
+C Y
+A X
+B Y
+B Z
+B Y
+B X
+C Z
+B Z
+C X
+C Y
+C X
+B Z
+C Y
+A X
+A X
+C X
+B Y
+B X
+B Y
+A X
+C Y
+A Z
+B Y
+B Y
+B Y
+B Z
+B Y
+C X
+A Z
+C Y
+A Z
+B Z
+C X
+C Y
+C X
+C Y
+A Y
+B Z
+B Y
+B Z
+C Y
+A X
+B Y
+A X
+C X
+B X
+C X
+A Z
+B Z
+B Z
+C Y
+B Z
\ No newline at end of file
diff --git a/inputs/02a.txt b/inputs/02a.txt
new file mode 100644
index 0000000..25097e8
--- /dev/null
+++ b/inputs/02a.txt
@@ -0,0 +1,3 @@
+A Y
+B X
+C Z
\ No newline at end of file
diff --git a/src/02.cs b/src/02.cs
new file mode 100644
index 0000000..3d0e193
--- /dev/null
+++ b/src/02.cs
@@ -0,0 +1,115 @@
+namespace aoc2022;
+
+internal class Day02 : Day
+{
+ IEnumerable? lines;
+
+ internal override void Parse()
+ {
+ lines = Util.ReadAllLines("02");
+ }
+
+ internal override string Part1()
+ {
+ int score = 0;
+ foreach (var line in lines!)
+ {
+ int roundScore = 0;
+ switch (line[0])
+ {
+ case 'A' when line[2] == 'X':
+ roundScore += 1;
+ roundScore += 3;
+ break;
+ case 'A' when line[2] == 'Y':
+ roundScore += 2;
+ roundScore += 6;
+ break;
+ case 'A' when line[2] == 'Z':
+ roundScore += 3;
+ roundScore += 0;
+ break;
+ case 'B' when line[2] == 'X':
+ roundScore += 1;
+ roundScore += 0;
+ break;
+ case 'B' when line[2] == 'Y':
+ roundScore += 2;
+ roundScore += 3;
+ break;
+ case 'B' when line[2] == 'Z':
+ roundScore += 3;
+ roundScore += 6;
+ break;
+ case 'C' when line[2] == 'X':
+ roundScore += 1;
+ roundScore += 6;
+ break;
+ case 'C' when line[2] == 'Y':
+ roundScore += 2;
+ roundScore += 0;
+ break;
+ case 'C' when line[2] == 'Z':
+ roundScore += 3;
+ roundScore += 3;
+ break;
+ }
+
+ score += roundScore;
+ }
+
+ return $"Score: <+white>{score}";
+ }
+
+ internal override string Part2()
+ {
+ int score = 0;
+ foreach (var line in lines!)
+ {
+ int roundScore = 0;
+ switch (line[0])
+ {
+ case 'A' when line[2] == 'X':
+ roundScore += 3;
+ roundScore += 0;
+ break;
+ case 'A' when line[2] == 'Y':
+ roundScore += 1;
+ roundScore += 3;
+ break;
+ case 'A' when line[2] == 'Z':
+ roundScore += 2;
+ roundScore += 6;
+ break;
+ case 'B' when line[2] == 'X':
+ roundScore += 1;
+ roundScore += 0;
+ break;
+ case 'B' when line[2] == 'Y':
+ roundScore += 2;
+ roundScore += 3;
+ break;
+ case 'B' when line[2] == 'Z':
+ roundScore += 3;
+ roundScore += 6;
+ break;
+ case 'C' when line[2] == 'X':
+ roundScore += 2;
+ roundScore += 0;
+ break;
+ case 'C' when line[2] == 'Y':
+ roundScore += 3;
+ roundScore += 3;
+ break;
+ case 'C' when line[2] == 'Z':
+ roundScore += 1;
+ roundScore += 6;
+ break;
+ }
+
+ score += roundScore;
+ }
+
+ return $"Score: <+white>{score}";
+ }
+}
diff --git a/src/main.cs b/src/main.cs
index 79606b1..20ead3c 100644
--- a/src/main.cs
+++ b/src/main.cs
@@ -49,7 +49,7 @@ else
Day? day = null;
if (string.IsNullOrEmpty(desiredDay))
{
- day = new Day01();
+ day = (Day)Activator.CreateInstance(types.Last())!;
}
else
{