const std = @import("std"); const lineLength = 4; // maximum line length (digits) const decimalSize = u13; // every num in input is < 2^13 const maxItems = 2000; // number of items in input file const path = "data/day01/input.txt"; pub fn first(allocator: ?std.mem.Allocator) anyerror!decimalSize { _ = allocator; const values = try parseValues(); var inc: decimalSize = 0; for (values) |v, idx| { if (idx == 0) continue; if (v > values[idx - 1]) { inc += 1; } } return inc; } fn parseValues() anyerror![maxItems]decimalSize { const file = @embedFile(path); var lines = std.mem.tokenize(u8, file, "\n"); var values: [maxItems]decimalSize = undefined; var i: decimalSize = 0; while (lines.next()) |v| : (i += 1) { values[i] = try std.fmt.parseUnsigned(decimalSize, v, 10); } return values; } 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(decimalSize, 1400)); std.debug.print("Day 1a result: {d} \t\ttime: {d}us\n", .{ ret, f }); } test "day01a" { try std.testing.expectEqual(@as(decimalSize, 1400), try first(std.testing.allocator)); }