const eql = std.mem.eql; const parseUnsigned = std.fmt.parseUnsigned; const print = std.debug.print; const std = @import("std"); const tokenize = std.mem.tokenize; pub fn main() !void { var position = @as(usize, 0); var depth = @as(usize, 0); defer print("{}\n", .{ position * depth }); var input = tokenize(@embedFile("input"), "\n"); while (input.next()) |line| { var command = tokenize(line, " "); const direction = command.next().?; const x = try parseUnsigned(usize, command.next().?, 10); if (eql(u8, direction, "forward")) position += x else if (eql(u8, direction, "down")) depth += x else if (eql(u8, direction, "up")) depth -= x else unreachable; } }