VTRQE7TUTF5CLFUPCFURXGT3SUHNNVABFDLI4LF76RIUW2QV5NUQC B YA YB ZA ZA YB ZC XC XC XC YC ZB YC YC ZA YB YC YB YB YB YC XB ZA XA ZC ZC YC YB YB XC ZB YB YC YB YB ZB ZB YA YA YB ZB YB YB YC YA YB YC ZB YB YA ZB YA YB YB ZC YC ZA ZC ZB YA XC ZA XA ZB YB YA YC ZB YB ZB ZB XC YB YA YA YB YA ZB XB YB YC YC ZA ZB YA YB ZB YB YB YC XC YB YB YB ZB YC XB YB YC ZC ZA XA XA XA XB YC ZB ZB YC ZB YB ZB YC XB YC XC ZB ZC ZC YB YB YA ZC ZC YC YB YB XC YB ZC ZC ZA ZB YB YB ZB YB YC XA ZA YB YC YB XC YC XC YA YB YA YA ZC ZC ZA ZC YB YC ZC YB YB YC XB YB YC YC XB XC YA ZB YA ZC YC ZB YA ZC XC XB YB YC ZB YA YB YA ZA XA YB YB YA YC ZB ZB YB YB YB YC XC ZC YB YA YA ZC YB YB YB ZB ZB ZA YB ZB YC YB YC XC YC YB YA YA ZB YB YA YC XC XB YA ZA XC YC YC YC XC YB YB ZB YB XA ZB YB ZA XB YC ZB YB ZB YB YB YB XC ZC ZA YB YC YA YC XC ZA ZC YB YB YC ZA ZC YC XC ZB XB YC YB YC XB YA XB YB YA ZB YB YC XB YA XA YB YA YC YC XC XB ZB YC YC YC YB YA YC YB YB YB YB YA ZB YB YA ZB YC ZC YB YB ZA YB YA ZC ZB YC ZB ZB ZA XA ZC ZB YA YC ZC YB YB XB YC YC YC YC XC YB YB YC YB YC ZC ZB YA YC YB ZC XC YB YB YB YC ZB ZB YA YB YA ZB YB ZB YB ZB YB ZC ZC ZA XA YB YC ZC YB ZA YA XB YB YB YB ZB YB YC YB YB YC YB YA ZC ZC ZC ZA ZB YB ZB YA ZB YB YB YB YB YA XC YB YC ZB YB YB YC YA ZB YB ZB YB YB YB YB YC YB ZA ZC YC XC XB YC ZB ZB ZB YB YB YA ZB ZA ZB ZA ZB YB XB YC ZC YB YA ZA ZB YB YB YB YA ZB ZB YB YB ZB YC ZB YC YB YC YB YA ZB YA ZC ZC YA ZA YA YA XA YB YB ZA XC XC ZB YA ZA XB YB YB YB ZC YC XB ZB YB YB YB YB YB YA ZC YB ZB YB YB YA XB ZA YC ZB ZB YB YC YA YC YB YB YA XC XB ZC YB YB ZC YB YB ZB XB YA ZB YB ZB YB YA ZA XA ZB ZA XC YB ZB YB XA XC YC XA YB ZB YA XA ZC XC ZB ZC XC XB YA YB YB YC ZA XC XB YB YB YB YC XB ZB YB YC XB XB YC XA ZA YB YB YB YC ZB YC XC XB ZB ZB ZB XB YC YB ZB YB YB YB ZB YC YB YB YB YB YB ZC ZA YC YB YB YA ZC ZB YB YA YB YC ZC ZB YA YA YC YB ZB ZC XB YC XB ZC ZA ZA YB ZC XB YA XA ZA YB YB XB ZA ZB ZA XA XA YB YC YB YB YC ZB YA XB YC YB ZC XB YB YB ZA ZB YC ZB YC YB YA YB YB YA ZA YC YB YB ZC YB YB YC ZB YC ZA XA ZB YB YC ZB YB YC YA XC ZB YA YB YA XA ZB ZB ZB YB YC YA YC XB YA ZC YC XA YA ZC XC ZA YB YB YC XB YA YB ZA XC ZA XB ZA ZA ZB ZB YB YB YB YC YB YA XA YA YB YB YC ZA YB ZB YC YA XB YA XA XA ZC YA ZC ZB YB YB YA XB ZC ZA XB YB YB YB YB YB YC YB YB YC YC YC ZA YC YB ZB YC YB YC YA YB YB YB YB ZB ZB YB YB YB YB YB YC XA ZA XB YB ZA ZA ZB YB YA ZA YA ZA ZA YB YB YB YB YC XB YB YB YB YB ZB ZB YC ZA ZA YB YB XC YC YA ZA XB YA XB YC ZB YC XB YB YB YC XC YB YB YB YA YB YC XB ZB YB YC ZB YB YA ZB ZB YB ZB XA YB YB YB YB YC XC YB YA ZA YB YB YB YB YB YB ZC ZA XB YA YB YB YB YB YB YA YB ZB YB YC YA XA XB XC YB YA YB YB ZB YC YB ZB ZA YA YC ZB YC ZC XA YB YA YA XB YC YA ZB YB YB YA ZB YA XC XA XB ZC YA XC YA ZC YB YB YB YB YC YC ZA ZB ZB ZC ZB YA YB ZB ZA YB ZC ZC YC XC ZC XB YA XB ZB YA XB YB YB ZC YC ZC YB YB YB ZA XB YA XB ZA ZA ZB YC YC YC YB YA ZB ZB ZC YA YA YA ZB YA XB ZC XB ZB YA YA YC YA ZB XA XC YB YB YC YB ZC XC YB YC YB YB YC YB XA ZB ZB YA ZB ZB YA ZC YC YB YC YB YB YB YB YB ZB YC YC ZB YB YA ZB YB ZA YA YC YA ZC YB ZB YC YB ZC YA ZB YB YB YB YC ZA YA XC XA YC YC XB YC YA YB YC YB YA XB YB YB ZC YC YA XB ZA ZB YB YB YB XB YB YC YB YC XA YB YB YA ZC XA XA XC XB YC ZB YA ZC YB YB YC XB ZC YA XA YC YA ZB YB ZC YA ZA YA YB YA XB ZB XB ZB YB YA YC YB YB ZB YA YC YC YA XB YA XC XA ZA YB ZB YB YB YC YA XB ZA XC YC ZA XB ZC XB YB YA YB ZB XB YB YA ZC YB YB YC YB YA XB YB YB ZB YA YA ZB YB YA YA ZA ZA YB YA YB ZB YB YA ZB YB YB XA XB YB YC ZC XA YB ZB YC YB YB YB YA XA YB YC ZB YB YB YC ZB YB ZB YB YB YC YB YB YC YC YA XC YA YB YB YB YB YA YA YC XB YC ZA XB XC ZC YB YB YB XB ZC YB ZB YB YB YB YC ZC YC YA YB YB ZB YC ZB YB YC YB YB ZB ZB YC ZB YB YB YB YB YA YC XA ZA YB YC XB ZB YC YB YA YB YB YB YA ZA ZB YB YB ZA ZC YC YC YC ZB YC YC XA ZB ZB XB XC YB YA ZB ZB YB YB ZB YB YB XB YB YA ZA ZA YB ZB YA YB YA ZB YB YA XB ZC YA ZC YC YB YC XC YA XA ZC ZB YB YB YB YB YB YB YB YB YB YB YB YB YC XC YC YC YB YB YC YC YA XB XC XC ZB YA YA ZB YC YC ZB YA YC YB YA YB YA YC ZC YA YA ZB YC YB YB YB YB YB ZC ZB YB YC ZA YB YC YB YA XB YB YA YB YB YA XB YB ZB YB YB YC ZC YA ZB YC YC ZB YA YB YB YB YC XB ZC YC XA XC YB YB YB YB YB YB ZC YB YC XB YB YB YB ZA YA YA ZB YC YA YA XB ZC YB YB YB YB YB ZA YB YC YC ZB XB ZB YB YC YB XA YC YB YC YC XA YB YB ZC ZB YB YC ZA ZA YB YB YB YC YB YB YB ZB ZC YB YA ZC YC YB YA ZB YB YB YA YA XC YC ZC YB ZB YB YB YC YB YB YB YB ZB YB YC XC YA ZC XB YB YB ZB YA XA XC XB YB YB YA ZB ZB ZB YC YB YB YC YA ZC YB YB ZA ZA YB ZA ZB YB YA ZB YC ZB YB YB ZB YB YB YB YB YB YA ZB YB YC YB YA YB YC YB YB YB YC ZC YC XB YA XC YB ZC YB YC XA YB YA ZA XB ZC YC YA ZC ZB ZB YB YB YB YA YA ZB YB YA YC XB YB YC YC XB XC YB YA YB YB YB YC YB YB YA ZB YA ZB YB YB ZB YC YB YA YB YA YB YB ZB YB YC XB YB YC XC ZC ZB YB ZB YA YB YA YB YC YA YB YC YB YB YB YA YC YC ZC XC YC XC YB YC ZC ZB YA ZB ZB XC YA YC YC YB YB YB YB YC XB YC YC XC YC XB YA YA YB YC XC XC XC XC XB YB YB YC YC ZC YB YA YC ZB YB YA YB YC YA ZB YA ZC XC YC YA XC YC ZB YB YC YB ZB ZB YA ZA XB YB YA ZC YC ZA ZC ZB YC YB ZC ZC YA XA YB ZC ZB YB YC ZC XB YB YB ZB YA YA ZB YA YB YB YA ZC XC YB YB YA XB YB ZC YA YC YB YC YB YB YB YC XB XB YB YB YB ZB ZB YB XB YB XB ZA XC XB YB YA ZC XA YB YB ZC ZB YB ZA YA ZB YC ZB YA ZB YA ZA YC YB YB YA XC YB YA XB YC ZA ZB YB XA YC YB ZC YB YB ZA YA ZB YB YA ZA XC YB ZB ZB YC ZC YC ZB YB YB ZB YB YA XB YB YC XC ZB YB YA XB YB ZC ZB ZA YB YB ZB YC YC YB YB YB ZA XB ZB YC YA XB YA YB ZA YB YB YB ZC YC YB ZC YB YC YB YA ZA ZC ZB YB YA ZB ZB ZC YB YB YB ZC YA ZC YC ZC ZA YB YC YB ZB YC ZB YB YA XB YB YB YB YA ZC YA YB YB YC ZB YB YB YB ZB YB XC YB YB YA XC XA XB ZA ZB YB YC XB ZB YB ZB YC ZA XB ZB YB YB ZB YB YA YB YA XB ZC XB YB YB YB YB YB ZB YB YC ZB YA YA XC YB ZB ZB YB YA YB ZB YB YB YB YB ZB XB YB YC YB YB YB YB ZB ZB YB YB YC XC ZC ZA ZA YC YB YC ZC YC XB YB YA XA YC XB YB YC YB YB YB YC ZB YC ZC YB ZB YB YA XC ZC YB YB YC YC YB ZB YB ZB YC YB YC YB YC YC XB YC YB YA ZB YA YC YC YB YB YC XA ZA XB ZB YB ZA ZC YA YA XC YA YA YC ZB YB YB YC XB YA XB YB YB YA ZA XB YC YB YA XB ZA YA XA ZC ZB ZC XB YA XB ZA ZB YA ZB YA ZC ZA YB YB YA XB YA XB YA ZC ZB YB YB YB YB YB YB YA YC XC YC ZB YB YA XC ZA YB YB YC ZB ZB YB ZB YB YB YC YA YC ZB YA XB YC YB YA XA XB YC YB YB YA YC XC YC XA YB YB YA YB YC YC ZB ZB YB YC YB ZB YB YB YC YB YC YB YC ZB YB ZB YB YA ZB YB ZB YB ZA YB YB YB YA YC XB YC YB YB YB YC YB YB YC ZB YA ZC YC ZB YB YC YB ZB YA YA YB YB YB YB XB ZA XC ZB ZA ZB YB YA XA YC YB YB ZB YB YB YB ZA YB YB YB YC ZC ZB YB ZB YB YB YC YA ZB YB YB ZB YB YB YA XB YB YB YC YB YB YC ZB ZC YB YB ZC YB YB ZB YB YA ZC ZC YB YC XB YB YB ZB YB YA YB ZC YC YA YB ZC XC YC XA ZA XB YC XB YB YB ZA ZB ZB XB YB ZB YB XA YB YC XA ZA XB YB YB YB ZB YA XC ZB ZB ZB ZA YB YB YC XB YA YA ZB ZB ZB YB YC YC YC XB YC ZB ZB YB YB YB ZC XC XB YB YB ZB YA YB YB YA XB YB YB ZA YB YA XB XA YC YB YB XA XB YB ZA YB ZB YB YC YB YB YB YB YB YA YB YA YB YA YB YB YB YA XA YA YA XB ZA XC YC YB YA XB YA YB YB YB YC XC YB YC XC YB YB YC YB YB YB YB ZA ZB YB ZB ZA XC ZB YC ZB YC ZB YA XC YC ZA ZA YB YA YB YB YB YB YB YA YC YC YB ZB YB YB ZA ZA XC ZB YB YA XC YA YB YA YB YB ZC YC ZB YA YB YC ZC ZA XA XC ZA XA ZB YB YC ZC YC ZA XA XB ZB YB YA XB YB ZC YC XB YC ZB YC ZB YB ZB YC YA ZB YB YA XA ZA XC YB YB YC ZB ZC XB YC YC YA ZC ZB ZB YB ZB YA ZA YA YA XB ZC ZC XB YA XC XA YB YB YB YA ZB YC XB YA ZB ZB ZC YB YC XC XC YC YC ZC XB YC YC YB ZB YA YB ZA XB YA ZC YB YC ZB YA XC ZB ZB YB YB YB YB YC ZA ZC YA ZB YC XC XA XA YB ZC YC XC XC YC XB YC XA YC ZB YB ZB YA XB YA ZA YC XA XB XC XC ZC XA YA ZB YA Y
const std = @import("std");const PATH = "import/day02.txt";pub fn first(allocator: std.mem.Allocator) !usize {_ = allocator;var sum: usize = 0;var lines = std.mem.tokenize(u8, @embedFile(PATH), "\n");while (lines.next()) |line| {var words = std.mem.tokenize(u8, line, " ");const opp: usize = switch (words.next().?[0]) {'A' => 1, // rock'B' => 2, // paper'C' => 3, // scissorelse => unreachable,};const me: usize = switch (words.next().?[0]) {'X' => 1, // rock'Y' => 2, // paper'Z' => 3, // scissorelse => unreachable,};var outcome: usize = undefined;switch (me) {1 => {outcome = if (opp == 1) 3 else if (opp == 2) 0 else 6;},2 => {outcome = if (opp == 1) 6 else if (opp == 2) 3 else 0;},3 => {outcome = if (opp == 1) 0 else if (opp == 2) 6 else 3;},else => unreachable,}sum += me + outcome;}return sum;}pub fn second(allocator: std.mem.Allocator) !usize {_ = allocator;var sum: usize = 0;var lines = std.mem.tokenize(u8, @embedFile(PATH), "\n");while (lines.next()) |line| {var words = std.mem.tokenize(u8, line, " ");const opp: usize = switch (words.next().?[0]) {'A' => 1, // rock'B' => 2, // paper'C' => 3, // scissorelse => unreachable,};const outcome: usize = switch (words.next().?[0]) {'X' => 0, // lose'Y' => 3, // draw'Z' => 6, // winelse => unreachable,};var me: usize = undefined;switch (outcome) {0 => { // loseme = if (opp == 1) 3 else if (opp == 2) 1 else 2;},3 => { // drawme = if (opp == 1) 1 else if (opp == 2) 2 else 3;},6 => { // winme = if (opp == 1) 2 else if (opp == 2) 3 else 1;},else => unreachable,}sum += me + outcome;}return sum;}test "day02a" {try std.testing.expectEqual(@as(usize, 13052), try first(std.testing.allocator));}test "day02b" {try std.testing.expectEqual(@as(usize, 13693), try second(std.testing.allocator));}const test_input =\\A Y\\B X\\C Z;