const std = @import("std"); const path = "data/day02/input.txt"; const intType = u32; pub fn first(allocator: ?std.mem.Allocator) anyerror!intType { _ = allocator; const input = @embedFile(path); var commands = std.mem.tokenize(u8, input, "\n"); const Position = struct { forward: intType = 0, depth: intType = 0, }; var pos: Position = .{}; while (commands.next()) |c| { // example: commands = forward 8 var comm_parts = std.mem.tokenize(u8, c, " "); const direction = comm_parts.next().?; const value = try std.fmt.parseUnsigned(intType, comm_parts.next().?, 10); if (std.mem.eql(u8, direction, "forward")) { pos.forward += value; } if (std.mem.eql(u8, direction, "down")) { pos.depth += value; } if (std.mem.eql(u8, direction, "up")) { pos.depth -= value; } } return pos.forward * pos.depth; } pub fn main() anyerror!void { var timer = try std.time.Timer.start(); const ret = try first(null); const f = timer.lap() / 1000; try std.testing.expectEqual(ret, @as(u32, 1893605)); std.debug.print("Day 2a result: {d} \t\ttime: {d}us\n", .{ ret, f }); } test "day02a" { try std.testing.expectEqual(@as(u32, 1893605), try first(std.testing.allocator)); }