const std = @import("std"); pub fn main() !void { var file = try std.fs.cwd().openFile("inputs/day1.txt", .{}); defer file.close(); var buf_reader = std.io.bufferedReader(file.reader()); var in_stream = buf_reader.reader(); var buf: [1024]u8 = undefined; var elf_sums: [1024]i32 = [_]i32{0} ** 1024; var i: usize = 0; while (try in_stream.readUntilDelimiterOrEof(&buf, '\n')) |line| { if (line.len == 0) { i += 1; } else { const calorie_count = std.fmt.parseInt(i32, line, 10) catch |err| { std.debug.print("Error converting str: {?}\n", .{err}); return; }; elf_sums[i] += calorie_count; } } std.sort.sort(i32, &elf_sums, {}, std.sort.desc(i32)); var sum: i32 = 0; for (elf_sums[0..3]) |value, index| { std.debug.print("Pos {} = {}\n", .{index+1, value}); sum += value; } std.debug.print("Total calories of the top three elves: {}\n", .{sum}); } test "simple test" { var list = std.ArrayList(i32).init(std.testing.allocator); defer list.deinit(); // try commenting this out and see if zig detects the memory leak! try list.append(42); try std.testing.expectEqual(@as(i32, 42), list.pop()); }