aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2022/02-rock-paper-scissors/example3
-rw-r--r--2022/02-rock-paper-scissors/first.zig25
-rw-r--r--2022/02-rock-paper-scissors/input2500
-rw-r--r--2022/02-rock-paper-scissors/second.zig32
4 files changed, 2560 insertions, 0 deletions
diff --git a/2022/02-rock-paper-scissors/example b/2022/02-rock-paper-scissors/example
new file mode 100644
index 0000000..db60e36
--- /dev/null
+++ b/2022/02-rock-paper-scissors/example
@@ -0,0 +1,3 @@
+A Y
+B X
+C Z
diff --git a/2022/02-rock-paper-scissors/first.zig b/2022/02-rock-paper-scissors/first.zig
new file mode 100644
index 0000000..b1b8559
--- /dev/null
+++ b/2022/02-rock-paper-scissors/first.zig
@@ -0,0 +1,25 @@
+const std = @import("std");
+
+const example = @embedFile("example");
+const input = @embedFile("input");
+
+pub fn main() anyerror!void {
+ try std.testing.expectEqual(solve(example), 15);
+ const result = try solve(input);
+ try std.io.getStdOut().writer().print("{}\n", .{result});
+}
+
+const scores = [3][3]u8{ // X Y Z
+ [3]u8{ 4, 8, 3 }, // A 4 8 3
+ [3]u8{ 1, 5, 9 }, // B 1 5 9
+ [3]u8{ 7, 2, 6 }, // C 7 2 6
+};
+
+fn solve(puzzle: []const u8) !u64 {
+ var it = std.mem.tokenize(u8, puzzle, "\n");
+ var tot: u64 = 0;
+ while (it.next()) |line| {
+ tot += scores[line[0] - 'A'][line[2] - 'X'];
+ }
+ return tot;
+}
diff --git a/2022/02-rock-paper-scissors/input b/2022/02-rock-paper-scissors/input
new file mode 100644
index 0000000..627a35e
--- /dev/null
+++ b/2022/02-rock-paper-scissors/input
@@ -0,0 +1,2500 @@
+B Z
+B X
+C Y
+B Y
+B Y
+A X
+A X
+B Z
+A Z
+B Z
+B Y
+B X
+C X
+B Y
+A Z
+B Y
+A X
+B X
+C Y
+B Y
+B Y
+C Y
+B X
+B X
+C X
+B Y
+B Y
+B Y
+C Y
+C X
+B Y
+C X
+C X
+B Y
+B Z
+C Y
+B Y
+B Z
+B X
+B Y
+B Y
+C Y
+B Y
+C Y
+C Y
+A Z
+B X
+C X
+B Y
+B X
+C X
+A X
+B Y
+C Y
+B X
+C X
+C Y
+B X
+B Z
+B Y
+B X
+C Y
+B X
+B Y
+B Y
+B Y
+B Y
+A X
+A Z
+B Z
+B Y
+C X
+B Y
+B Y
+C Y
+C Z
+C Z
+C X
+B X
+C Z
+B Y
+B Y
+C X
+C Z
+C X
+A Z
+C Y
+B Y
+B Y
+B Y
+C Y
+C Y
+C X
+C X
+C Z
+A X
+B Y
+C X
+B Z
+B Y
+C X
+B X
+B Z
+A Z
+C Y
+B Z
+C X
+C X
+B Y
+B Y
+B Y
+C Y
+C X
+B X
+B Y
+A Z
+A Z
+C Y
+B Y
+C Y
+C Y
+C Y
+B X
+A Z
+C Y
+C Y
+A Z
+A Z
+B X
+B Y
+B Z
+A Z
+B X
+B Y
+C Z
+C Z
+B Z
+B Y
+B X
+A Y
+C Z
+C X
+A Z
+A Z
+B Y
+B Y
+C Y
+C Y
+B Y
+B Y
+B Y
+A Z
+C Y
+C Z
+C X
+A Z
+B X
+B Y
+A Y
+A Y
+B Y
+B Y
+C X
+B Y
+B Y
+C Z
+B Y
+B Y
+A Z
+C Y
+B X
+C X
+A X
+C X
+B Y
+B X
+A Z
+C X
+C Y
+A Z
+B Y
+A Z
+B X
+B X
+A Z
+B Y
+C X
+C X
+A Z
+A X
+C X
+C X
+C X
+B Y
+C Z
+C Y
+C X
+B Y
+B Y
+B Y
+A X
+A Z
+C Y
+B Y
+B Y
+A X
+C Y
+C Z
+C Y
+C X
+B Y
+B Y
+B Y
+B Y
+A Z
+B Y
+A Z
+B X
+B Y
+B Y
+B X
+C Y
+A X
+A Z
+B Y
+C Y
+C Y
+B Y
+B Y
+C X
+B Y
+B X
+A Z
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+A X
+B X
+B Z
+C Y
+B Z
+C X
+C X
+B Z
+B Y
+A Z
+A Z
+B Y
+C X
+A X
+C Y
+B Y
+B Y
+A X
+B Y
+A Y
+C Y
+B Y
+C X
+B Y
+A Z
+B Z
+C Y
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+C Z
+A X
+B Y
+B X
+C X
+C Z
+C Z
+C Y
+C Y
+A X
+C Y
+B Y
+A X
+C X
+A Z
+C X
+B Y
+C Z
+C Z
+A Z
+A X
+C Y
+C X
+B Y
+C Z
+B Y
+C Y
+C X
+C Y
+B Y
+B Y
+B Y
+A X
+A Z
+B Y
+B X
+B X
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+A X
+A X
+A Z
+A Z
+B X
+C Y
+A Z
+B Y
+B Y
+C Z
+C X
+C Y
+A Z
+C Y
+C Y
+C Y
+C Y
+C X
+A Z
+C Z
+A Z
+C Y
+C X
+B Y
+B Y
+C Z
+B X
+B Z
+C X
+A Y
+C Y
+B X
+B X
+B Y
+C Y
+A Z
+A Z
+B X
+B Z
+B X
+C Y
+A X
+A X
+C Z
+B Y
+C Y
+C X
+B Y
+A Z
+B Y
+C Y
+B Z
+C Z
+C X
+B Z
+C Z
+B Z
+A X
+C Y
+A Z
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+A Z
+C Z
+B X
+C X
+C Y
+C Y
+B Y
+C X
+C X
+A Y
+C Y
+C Y
+A Z
+C Z
+B Y
+B X
+C X
+B Y
+C X
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+A Z
+C Y
+B Z
+B Y
+C X
+B Y
+C X
+A Y
+A Z
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Y
+B Z
+C Y
+B Z
+B Z
+A Z
+B Y
+B Y
+C X
+A X
+B Y
+A Z
+C X
+C X
+B Y
+B Y
+A X
+B Y
+B Y
+C X
+B Y
+C X
+B Y
+B Y
+B Y
+B Y
+A X
+B Y
+B Z
+B Y
+A Z
+C X
+C X
+C Y
+A Z
+C Y
+B Y
+B X
+A X
+B Y
+A Z
+B Y
+C Y
+B Y
+B Y
+C Y
+C X
+A Z
+A X
+A Z
+C Z
+B Y
+B Y
+C Y
+B X
+C X
+B Y
+A Z
+B Y
+C X
+A X
+C X
+C Y
+C Y
+B X
+B Y
+B Y
+C Z
+B Y
+C X
+A Z
+C Z
+C Y
+A Z
+C X
+C Y
+C Y
+C X
+B Y
+B Y
+C Z
+A Z
+B Y
+A X
+B Y
+A X
+A X
+C Y
+C X
+A Z
+B Y
+C Y
+C X
+B Y
+B Y
+B Y
+B X
+B X
+A X
+C X
+B Y
+C Y
+A Z
+A Z
+A Z
+B Y
+A Z
+B Y
+C X
+B Y
+C X
+C Y
+A Z
+B Y
+B Z
+A Z
+B Y
+A Z
+B Y
+B Y
+C Z
+B Y
+B Y
+A Z
+A X
+C Z
+C Z
+B Z
+B Y
+A Z
+B Y
+B Y
+B Y
+B Y
+C Z
+A Z
+C X
+B X
+B Y
+A X
+A X
+B Y
+A Z
+A X
+C Y
+B Y
+C X
+A Z
+B Y
+C Z
+C Y
+B Y
+A X
+C Y
+B Y
+B Z
+A Y
+B Y
+B Y
+A Z
+B Y
+C Z
+C X
+B Y
+A Y
+C Z
+B X
+A X
+B Y
+B Y
+B Z
+B Z
+C Y
+B Y
+B Y
+A Z
+A Z
+B Y
+B X
+C Y
+C Y
+B Y
+B Y
+B Z
+B Z
+B Y
+C Y
+A Z
+B Y
+A Z
+B Y
+B Y
+A Z
+A Z
+C X
+C Z
+B Y
+C X
+B X
+A Z
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+B Y
+B X
+B Y
+A X
+B Z
+A Z
+C Z
+B X
+A Z
+C Y
+C Y
+A Z
+B Y
+C Z
+C Z
+C Y
+B Y
+B Y
+B Y
+A Z
+B Y
+B X
+C X
+B Y
+B Y
+B Y
+B Y
+C Y
+B Y
+C Y
+B Y
+C Y
+C X
+A Z
+C Y
+C Z
+C Z
+B X
+C Y
+B Y
+B X
+C Y
+B Y
+B Y
+C Y
+C X
+C X
+A Z
+B Y
+C X
+A Z
+C Z
+B Y
+B Y
+C X
+C X
+B Y
+B X
+C Y
+B Y
+B Y
+A Z
+A Z
+C Z
+A Z
+B Y
+C X
+C X
+B X
+B Y
+B Y
+B Z
+B Y
+B Y
+B Y
+B Y
+B Z
+B Y
+C Y
+C Z
+B Y
+C Y
+C Y
+C Y
+C Y
+A Z
+A Z
+C Y
+C Y
+A X
+B Y
+C Y
+A X
+C X
+C Y
+A Z
+B Y
+B Z
+A X
+B Y
+B Z
+B Y
+B Y
+B Z
+C X
+C Y
+B Y
+B Z
+B X
+A Z
+B Y
+C Y
+B Y
+B Y
+A X
+C X
+B Y
+C X
+B Y
+C Y
+A X
+A X
+A Z
+C Y
+B Y
+C Y
+C X
+B X
+C X
+C X
+A X
+A Z
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+B X
+B Y
+C Y
+B Y
+A Z
+B Y
+C X
+C Y
+B Z
+C Z
+B Y
+A Y
+C X
+B Y
+B Y
+B Y
+C X
+A Y
+C Z
+B Y
+C X
+C Y
+C Y
+C Y
+C X
+C Y
+B Z
+B Y
+C Y
+C X
+B Y
+B Y
+B X
+C Y
+B X
+C Z
+B Y
+C X
+B Z
+C X
+B Y
+C X
+B Y
+C Y
+C Y
+A Z
+C Y
+C X
+B Y
+C X
+B X
+A Z
+B Y
+A Z
+A Z
+A Z
+C Y
+B X
+A Y
+C Y
+B Y
+B Y
+C Y
+C Y
+C X
+B X
+A X
+A Z
+C X
+A Y
+B X
+C Z
+B Y
+B Y
+B X
+C X
+B Y
+B Y
+B Y
+B X
+B Y
+C X
+B Y
+B Y
+C Z
+C Y
+B Y
+C Y
+B Y
+A Z
+C Z
+A Y
+B Y
+B Y
+B Y
+C Y
+C Y
+C Y
+B Y
+C Z
+B Y
+C Z
+A Z
+A Z
+C Z
+C Y
+C Z
+C Y
+A Z
+C X
+B X
+B Y
+C Y
+B Z
+C Z
+C X
+B Y
+A Z
+B Y
+C X
+B Z
+A X
+B Y
+A Z
+C Z
+C X
+C X
+C Y
+B Y
+B Y
+A Z
+A Z
+B Y
+B X
+A Z
+B Y
+C Y
+A X
+C Z
+B Y
+B X
+B Y
+C Y
+C Z
+B Z
+A Z
+B Y
+A X
+C X
+B Y
+A Z
+C X
+B Z
+C Y
+C Y
+C X
+C X
+C Y
+B Y
+B Y
+B Z
+B X
+C X
+B Z
+C X
+B X
+C Z
+C Z
+C X
+B Y
+C Y
+C X
+B Y
+A Z
+C Y
+C Z
+C Z
+C Y
+B Y
+A X
+C Z
+C X
+B Y
+C X
+C Z
+B Y
+C Y
+B Y
+C Y
+A Z
+B Z
+C Z
+C X
+B Z
+B Z
+B Y
+A Y
+C Y
+C Y
+B X
+B X
+B Y
+B Y
+B Y
+C X
+B Z
+B Y
+B Y
+B Y
+C X
+A X
+C Y
+A X
+B Y
+B Y
+B Y
+B Y
+B Y
+C Y
+C Y
+B Y
+B Y
+B Y
+B Y
+C Y
+B Y
+C X
+B Y
+B Y
+C X
+A Z
+A X
+C Y
+C Z
+B Y
+C X
+B Y
+B X
+A Z
+B X
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Z
+A Z
+A X
+B Y
+A Z
+C Y
+B Y
+C X
+B Y
+C Y
+B Y
+B Y
+C X
+C Y
+A Y
+C X
+C Y
+B Y
+A Y
+A Z
+C Z
+A Y
+A Z
+B Y
+C Y
+C Y
+B Y
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+C X
+C X
+B Y
+C X
+B Y
+A Z
+B Y
+B X
+C Z
+C Y
+A Y
+B Y
+C Y
+B Y
+C Y
+C Y
+C Y
+C X
+C Y
+B Y
+B Y
+C Y
+B Y
+C Y
+A Z
+A X
+B Y
+A Z
+B Y
+C X
+C X
+B Y
+C Z
+B Y
+B Y
+C Y
+B Y
+C Z
+A Y
+B Y
+C Y
+B Y
+A Z
+C Y
+B Z
+C Y
+C Y
+C Z
+B Y
+C X
+B Z
+B Y
+B Y
+B Y
+C Z
+B Y
+B Y
+B Y
+A Z
+C X
+B Z
+B Y
+B Y
+C Y
+B Y
+C X
+B Y
+B Y
+C Y
+C X
+C Y
+B Y
+B Y
+C Y
+B Y
+A Y
+B Y
+A Z
+B Y
+B Y
+B X
+A Z
+B Y
+B Y
+C Y
+C X
+C Z
+A Z
+A Z
+C X
+B Y
+C Y
+B Y
+C X
+B Y
+B Y
+C Y
+C X
+B Y
+B Y
+B Y
+B Y
+B Y
+C X
+B Z
+B Z
+A Z
+B Z
+B Y
+B Z
+B Y
+C Y
+A Z
+A X
+B Y
+C Z
+B X
+A X
+C Y
+B Y
+B Y
+C Y
+B Y
+C Y
+B Y
+A Z
+B Y
+B Y
+A Z
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Y
+C Y
+B Y
+A X
+A X
+B Y
+B Y
+A Y
+C Z
+A Z
+A Z
+B Y
+A Z
+C Y
+B Y
+B Y
+B Y
+B Y
+C Y
+B Y
+A X
+B X
+B Y
+B Y
+B Y
+B Y
+B X
+C Y
+B Y
+B Y
+B X
+C Y
+A Y
+B Y
+B Y
+B Y
+A X
+B Z
+C X
+A X
+C Z
+B Y
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+B Y
+C Y
+B Z
+B Z
+B Y
+B Z
+B Y
+B Y
+C Z
+C Y
+B Y
+C Z
+C Z
+B Y
+C X
+A Y
+B Y
+B Z
+A Z
+B Y
+C X
+B Y
+B Y
+C Z
+A Z
+B Y
+B X
+B Y
+C Y
+B Y
+B Z
+B Y
+B Y
+C X
+C X
+C Z
+B Y
+B Y
+B Y
+A Z
+A X
+B Y
+A Z
+B Y
+B Y
+B Y
+B Z
+C X
+C Z
+B Y
+B Y
+B Y
+C Z
+B X
+C Z
+A X
+B Y
+C Y
+B Y
+A Z
+A X
+C X
+B X
+A Z
+C X
+B Y
+C Y
+B X
+A Z
+C Y
+C Y
+B Z
+C X
+B Y
+C X
+C Z
+C Y
+B Y
+C Z
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+C Z
+B Y
+B Y
+B Y
+C X
+A Z
+B Z
+C Y
+C Y
+B Y
+A X
+C Y
+B Y
+C Z
+B Z
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+C Z
+A X
+B Y
+C Y
+A X
+B Y
+B Y
+A X
+B Y
+A Y
+C X
+A Z
+A Z
+C Y
+B Y
+C Z
+C Y
+C Y
+C Z
+A Z
+A X
+C Z
+B Y
+C X
+A Z
+C X
+B Y
+B Y
+B Y
+C Z
+C Y
+C X
+C Y
+A Y
+C X
+A Z
+A Z
+B Z
+C X
+B Y
+B Y
+C X
+A Z
+C Z
+C Z
+B Y
+B Y
+A Y
+C X
+B Z
+B Y
+B Y
+C X
+C X
+C Z
+C Z
+B Y
+B Y
+B X
+B Y
+B Y
+C Z
+C Y
+C Z
+B Y
+B Y
+B Y
+C Y
+B X
+C X
+A Z
+C X
+C X
+C Y
+B Y
+B Y
+C Y
+B Z
+B Z
+C X
+C Y
+B Y
+B Z
+B Y
+B X
+A Z
+C X
+B Z
+A Z
+C X
+B Y
+C Y
+C Y
+B Y
+B Y
+B Y
+B X
+A X
+B Y
+A X
+A Z
+C Y
+B Y
+B Y
+B Y
+B Y
+B Y
+C Z
+B X
+B Y
+C X
+A Z
+B Y
+B Y
+A Z
+B Y
+C Y
+C Z
+C X
+C Y
+B Y
+B Y
+B Z
+B Y
+A X
+C Y
+B Y
+A X
+B Y
+C X
+A Z
+B Y
+C X
+A Z
+B Y
+C X
+C Y
+C X
+B Z
+C Z
+B Y
+C Y
+C X
+C Y
+B Z
+B X
+A X
+C Z
+B Y
+B Y
+C Y
+B Z
+C X
+C X
+B Y
+B Y
+C Y
+B X
+B Y
+C Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+A X
+A Z
+B Z
+B Z
+B Y
+A Z
+B Y
+C Y
+B Y
+C X
+B X
+B Y
+B Y
+B X
+C Z
+B Y
+C Z
+C X
+B Y
+C Z
+B Y
+C Y
+B Z
+C Y
+C Y
+C Z
+C Z
+A X
+B Y
+A Z
+B Y
+B X
+A X
+B Y
+B Y
+B Y
+C Y
+B Y
+B X
+B Z
+C Z
+B X
+B Z
+B Y
+C Y
+B Y
+B Z
+C X
+A Z
+B X
+B Z
+C X
+C Z
+B Y
+A Z
+C X
+C Y
+B Z
+B Y
+C Y
+B Y
+C Y
+B Y
+B Y
+B Y
+C Y
+B Y
+C Y
+C X
+C Z
+B Y
+B Y
+B X
+C Z
+B X
+A Z
+C Y
+A Z
+C X
+C Y
+B Y
+C Z
+B Z
+C Z
+C Y
+C X
+B Y
+C Z
+C X
+B Y
+B Y
+B Y
+B X
+B Y
+B Y
+C X
+A X
+B Z
+C X
+C Z
+B Y
+C Y
+B Z
+C Z
+B Y
+C X
+B Y
+B Y
+A Z
+C Z
+B Y
+C Z
+C X
+B Y
+B Y
+C X
+C X
+C Y
+B Y
+A X
+A Z
+B Y
+C X
+B Y
+B Y
+C Y
+B Y
+A Z
+A Z
+C X
+C Z
+C X
+C X
+A X
+B Y
+B Y
+C Y
+C Z
+C Y
+B Z
+C Y
+B Y
+B Y
+B Y
+C Y
+B Z
+B Y
+B Y
+B X
+C Y
+C Y
+B Y
+A X
+C X
+A X
+C Z
+C Y
+A Y
+B Y
+B Y
+B Z
+C X
+C X
+B Y
+A X
+B Y
+A Z
+B Y
+A Z
+C X
+C X
+B Y
+B Y
+B Y
+B Y
+A X
+B Y
+B Z
+C Y
+C X
+C Z
+C Z
+B Y
+C Z
+B Y
+B Y
+C X
+B Y
+A X
+A Z
+B Y
+A Z
+C X
+B Y
+C Y
+B Z
+C Z
+B Y
+B Y
+B Y
+B Y
+C Y
+C Z
+B X
+B Y
+A Y
+C Y
+B Z
+B Y
+C Y
+A Z
+B Y
+B Y
+C Y
+C Y
+A Y
+C Y
+A Z
+C Y
+B X
+B Y
+B Y
+C Y
+A Z
+C Y
+A Z
+B Y
+B Y
+B Y
+B Y
+A X
+C Y
+A Z
+B Y
+B Y
+B Y
+B Y
+B Z
+C Z
+C Y
+C X
+B Y
+C X
+B Y
+B Y
+B Y
+B Y
+A Z
+B Y
+C Y
+C Y
+A Z
+A X
+B Y
+C Y
+C Y
+B Y
+C Y
+C Y
+C Y
+C Z
+A Z
+C X
+C Y
+C X
+B Y
+B Y
+C X
+C Z
+C X
+C Z
+B X
+B Y
+C Z
+B Z
+A Z
+C Y
+B Z
+C Y
+B Y
+A X
+B Y
+A Z
+B Y
+A X
+B Y
+B X
+B Z
+B X
+B Y
+B Y
+B Y
+C X
+B Y
+B X
+C X
+B Y
+B Z
+B Y
+C Y
+B Y
+B Y
+C X
+A Z
+C X
+B Y
+C Y
+C Z
+B Y
+C Z
+B Y
+B Y
+B Y
+B Y
+C Z
+C X
+C Y
+C Z
+B X
+A Z
+A Z
+B Y
+B Z
+C Y
+A X
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Y
+A Z
+C Z
+B Z
+C Y
+A Z
+C Y
+B Y
+B Y
+B Y
+B Z
+B Y
+C X
+C Z
+B X
+C X
+B Y
+C Z
+C X
+B Y
+A Z
+A Z
+B Y
+B Y
+B Y
+C X
+A Y
+B Y
+B Y
+A Z
+A Z
+C Z
+C Y
+B Y
+B Y
+A X
+B Z
+A X
+B Y
+A Z
+B Y
+C X
+B Y
+A Y
+B Y
+B Z
+B Y
+B Z
+B Y
+B Y
+C Y
+C Y
+B Y
+C X
+C Z
+B Y
+B Y
+B Y
+C Z
+A Z
+C X
+B Y
+B Z
+B Y
+C Y
+B Y
+C X
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+B X
+B Y
+B Y
+C X
+B Y
+B Z
+A Z
+A Z
+C X
+B X
+B X
+C Y
+C Z
+B Y
+C X
+A X
+B Y
+C X
+C Z
+C X
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+A Z
+C Z
+C X
+B Y
+B Y
+A X
+B Y
+C Y
+B Y
+B Y
+C Y
+B X
+B X
+A X
+C Y
+C Z
+C Y
+B Y
+B Y
+C X
+A X
+A X
+C X
+B Y
+C X
+B Y
+B Y
+B Y
+C Y
+A Z
+B Z
+A Z
+B Y
+B X
+C Y
+B Z
+B Y
+A Z
+B Y
+C Y
+B Y
+C Y
+A X
+B Y
+B Y
+B Y
+C X
+A Z
+C Y
+B Y
+B Y
+B Y
+C X
+B Y
+C Y
+B Y
+B X
+C X
+B Y
+B Y
+C Y
+C X
+C Z
+C Z
+B Y
+B Y
+B Y
+B X
+C X
+B X
+A Y
+A Z
+C Y
+A X
+B Y
+B Y
+B Y
+A Z
+C Y
+C X
+C Y
+C Z
+A Z
+B Y
+B Y
+B Y
+B Y
+A Z
+B Y
+A Z
+B Y
+B Y
+C Y
+C Z
+C Y
+A Z
+C Y
+B Y
+C Y
+B X
+B Y
+A X
+C Z
+C Z
+A X
+C X
+C Z
+C X
+C X
+B Y
+A X
+A Z
+C Y
+B Y
+C X
+B Y
+B Y
+B X
+C Y
+C Z
+B Y
+B Z
+A Z
+C Y
+B Y
+A Z
+B Y
+C X
+C X
+B Z
+C Y
+B X
+B Y
+C Y
+B Z
+A Z
+C X
+C Y
+C X
+C Z
+B Z
+C Z
+B Y
+B X
+B Y
+B X
+B Y
+B Y
+B Y
+B Y
+C X
+C X
+C Y
+B Z
+C X
+B Y
+B Y
+B Z
+C Z
+C Y
+B Y
+B Y
+B Y
+C X
+B Z
+B Y
+B X
+B Y
+C Y
+C X
+C Z
+C X
+C Y
+B Y
+B Y
+B X
+B Y
+C X
+B X
+A X
+B Y
+C Y
+B Y
+A X
+C Y
+B Z
+B Z
+C X
+C Z
+C X
+B Y
+C Y
+C Y
+B Y
+C Z
+B Y
+C Y
+B Y
+C Y
+A Z
+B Z
+C X
+C X
+B Y
+B Y
+B Z
+B Y
+B Z
+A X
+C X
+C X
+B Y
+C X
+A Z
+C Y
+B Y
+A Z
+C Z
+B X
+C Y
+C X
+C X
+A Z
+B Y
+B Y
+C Z
+B Y
+A Y
+C Y
+B Y
+B X
+B Z
+C X
+B Y
+B X
+C Z
+B Y
+B X
+B Y
+B Y
+B Y
+A Z
+A Z
+B Z
+A Z
+C Y
+C Z
+B X
+C X
+A Z
+C X
+B Y
+B Y
+A X
+B X
+B Y
+B X
+B X
+A Y
+A Z
+C X
+B Z
+B Z
+C Y
+C Y
+B Y
+B Y
+B Y
+A Z
+A Z
+B Y
+B Y
+C Y
+C Y
+C Y
+C Z
+C X
+C Y
+B Y
+B X
+B Y
+A Y
+A X
+C Y
+B Y
+A Z
+B Y
+B Y
+C X
+C X
+B Y
+B Y
+C Y
+A Z
+B Y
+C Y
+C Z
+C Z
+C Y
+A Y
+B Y
+B Y
+C Y
+B X
+C Z
+C Z
+C Z
+B Y
+B Y
+B Y
+C Y
+A Z
+B Y
+A Z
+B Y
+A Z
+C X
+C Z
+C Y
+B Y
+A Z
+B Y
+B Y
+C Z
+B Y
+C X
+B Y
+C Y
+C Y
+B Y
+B Y
+A X
+C Z
+B Y
+C Y
+C X
+B Y
+B Y
+B Y
+B Z
+A Z
+B Y
+B Y
+B Y
+A Z
+B Y
+A X
+B Y
+B Y
+B Y
+C Y
+C X
+C Y
+A Z
+B Y
+C Y
+B Y
+C Y
+C Y
+C Y
+A X
+C Z
+B Y
+B Y
+C Z
+B Y
+B Y
+C Z
+B Z
+B Y
+C Y
+B Y
+B Y
+B Y
+B Y
+B X
+C X
+C Y
+B Y
+A Z
+B Y
+A X
+B Y
+B Y
+B Y
+B Y
+C Z
+C Z
+B Y
+A Z
+B Y
+C X
+C X
+C Y
+B X
+A X
+B X
+B Y
+C X
+C Z
+C Y
+C Y
+B Y
+C Z
+B Y
+B Y
+C Z
+A X
+B Y
+C Z
+B Z
+B Y
+C X
+C X
+B Y
+B Y
+B X
+C Z
+A Z
+A X
+B Y
+C X
+B Y
+B Y
+C Z
+B Z
+C Y
+B Y
+B X
+C X
+C Z
+B Z
+B Z
+C Y
+B Y
+A X
+B Y
+B Y
+C X
+B X
+A Z
+B Y
+A Z
+B Y
+B Y
+A Z
+C X
+C X
+B Y
+B X
+B Y
+A Z
+C Y
+C Z
+B Y
+B Y
+A X
+B Y
+C Y
+C Y
+B Y
+A X
+B Y
+B Y
+A Z
+C X
+C X
+C Y
+B Y
+A X
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+B Z
+B Y
+C Y
+C Y
+B Y
+C X
+C X
+B Y
+C Y
+B Y
+C X
+B Y
+B Z
+B Y
+A Z
+A Z
+C X
+A Z
+A Z
+B Y
+B X
+C Z
+B Y
+B Y
+B Y
+B Y
+B Y
+C X
+C Y
+B Y
+A X
+C X
+C X
+C Y
+B Y
+C X
+C X
+C Z
+B Z
+C Y
+C X
+B Y
+B Y
+C X
+B X
+C Z
+B Y
+B Y
+C Y
+A Z
+C Y
+C X
+C Y
+B Y
+B Y
+C X
+C Y
+C Y
+C X
+B Z
+B Z
+B Y
+B Y
+C Y
+B Y
+C X
+A Z
+A X
+C Z
+B Y
+C Y
+C Y
+B Y
+B Y
+C Y
+B Y
diff --git a/2022/02-rock-paper-scissors/second.zig b/2022/02-rock-paper-scissors/second.zig
new file mode 100644
index 0000000..dec9853
--- /dev/null
+++ b/2022/02-rock-paper-scissors/second.zig
@@ -0,0 +1,32 @@
+const std = @import("std");
+
+const example = @embedFile("example");
+const input = @embedFile("input");
+
+pub fn main() anyerror!void {
+ try std.testing.expectEqual(solve(example), 12);
+ const result = try solve(input);
+ try std.io.getStdOut().writer().print("{}\n", .{result});
+}
+
+const scores = [3][3]u8{ // X Y Z
+ [3]u8{ 4, 8, 3 }, // A 4 8 3
+ [3]u8{ 1, 5, 9 }, // B 1 5 9
+ [3]u8{ 7, 2, 6 }, // C 7 2 6
+};
+
+const strategy = [3][3]u8{ // X Y Z
+ [3]u8{ 2, 0, 1 }, // A 2 0 1
+ [3]u8{ 0, 1, 2 }, // B 0 1 2
+ [3]u8{ 1, 2, 0 }, // C 1 2 0
+};
+
+fn solve(puzzle: []const u8) !u64 {
+ var it = std.mem.tokenize(u8, puzzle, "\n");
+ var tot: u64 = 0;
+ while (it.next()) |line| {
+ const move = strategy[line[0] - 'A'][line[2] - 'X'];
+ tot += scores[line[0] - 'A'][move];
+ }
+ return tot;
+}