aoc2025 @ master

 1const std = @import("std");
 2const builtin = @import("builtin");
 3const zbench = @import("zbench");
 4
 5const day1 = @import("day1.zig");
 6const day2 = @import("day2.zig");
 7const day3 = @import("day3.zig");
 8const day4 = @import("day4.zig");
 9const day5 = @import("day5.zig");
10const day6 = @import("day6.zig");
11
12fn day1pt1(_: std.mem.Allocator) void {
13    _ = day1.pt1(@embedFile("input/day1"));
14}
15
16fn day1pt2(_: std.mem.Allocator) void {
17    _ = day1.pt2(@embedFile("input/day1"));
18}
19
20fn day2pt1(_: std.mem.Allocator) void {
21    _ = day2.pt1(@embedFile("input/day2"));
22}
23
24fn day2pt2(_: std.mem.Allocator) void {
25    _ = day2.pt2(@embedFile("input/day2"));
26}
27
28fn day3pt1(_: std.mem.Allocator) void {
29    _ = day3.pt1(@embedFile("input/day3"));
30}
31
32fn day3pt2(_: std.mem.Allocator) void {
33    _ = day3.pt2(@embedFile("input/day3"));
34}
35
36fn day4pt1(_: std.mem.Allocator) void {
37    _ = day4.pt1(@embedFile("input/day4"));
38}
39
40fn day4pt2(_: std.mem.Allocator) void {
41    _ = day4.pt2(@embedFile("input/day4"));
42}
43
44fn day5pt1(alloc: std.mem.Allocator) void {
45    _ = day5.pt1(alloc, @embedFile("input/day5")) catch unreachable;
46}
47
48fn day5pt2(alloc: std.mem.Allocator) void {
49    _ = day5.pt2(alloc, @embedFile("input/day5")) catch unreachable;
50}
51
52fn day6pt1(_: std.mem.Allocator) void {
53    _ = day6.pt1(@embedFile("input/day6"));
54}
55
56fn day6pt2(_: std.mem.Allocator) void {
57    _ = day6.pt2(@embedFile("input/day6"));
58}
59
60pub fn main() !void {
61    var stdout = std.fs.File.stdout().writerStreaming(&.{});
62    const writer = &stdout.interface;
63
64    var bench = zbench.Benchmark.init(std.heap.page_allocator, .{});
65    defer bench.deinit();
66
67    try bench.add("Dia 1 parte 1", day1pt1, .{});
68    try bench.add("Dia 1 parte 2", day1pt2, .{});
69    try bench.add("Dia 2 parte 1", day2pt1, .{});
70    try bench.add("Dia 2 parte 2", day2pt2, .{});
71    try bench.add("Dia 3 parte 1", day3pt1, .{});
72    try bench.add("Dia 3 parte 2", day3pt2, .{});
73    try bench.add("Dia 4 parte 1", day4pt1, .{});
74    try bench.add("Dia 4 parte 2", day4pt2, .{});
75    // FIXME: this is a bug on the zbench that on debug or release safe mode it
76    // panics calculating memory used.
77    if (builtin.mode == .Debug or builtin.mode == .ReleaseSafe) {
78        try bench.add("Dia 5 parte 1", day5pt1, .{});
79        try bench.add("Dia 5 parte 2", day5pt2, .{});
80    } else {
81        try bench.add("Dia 5 parte 1", day5pt1, .{ .track_allocations = true });
82        try bench.add("Dia 5 parte 2", day5pt2, .{ .track_allocations = true });
83    }
84    try bench.add("Dia 6 parte 1", day6pt1, .{});
85    try bench.add("Dia 6 parte 2", day6pt2, .{});
86
87    try writer.writeAll("\n");
88    try bench.run(writer);
89}