1const std = @import("std");
2const day1 = @import("day1.zig");
3const day2 = @import("day2.zig");
4const day3 = @import("day3.zig");
5const day4 = @import("day4.zig");
6const day5 = @import("day5.zig");
7
8pub fn main() !void {
9 var gpa = std.heap.GeneralPurposeAllocator(.{ .thread_safe = false }){};
10 const alloc = gpa.allocator();
11 defer _ = gpa.detectLeaks();
12
13 for (1..std.os.argv.len) |i| {
14 const day = std.mem.span(std.os.argv[i]);
15
16 if (std.mem.eql(u8, "day1", day)) {
17 const input = @embedFile("./input/day1");
18 print(day1.pt1(input));
19 print(day1.pt2(input));
20 } else if (std.mem.eql(u8, "day2", day)) {
21 const input = @embedFile("./input/day2");
22 print(day2.pt1(input));
23 print(day2.pt2(input));
24 } else if (std.mem.eql(u8, "day3", day)) {
25 const input = @embedFile("./input/day3");
26 print(day3.pt1(input));
27 print(day3.pt2(input));
28 } else if (std.mem.eql(u8, "day4", day)) {
29 const input = @embedFile("./input/day4");
30 print(day4.pt1(input));
31 print(day4.pt2(input));
32 } else if (std.mem.eql(u8, "day5", day)) {
33 const input = @embedFile("./input/day5");
34 print(try day5.pt1(alloc, input));
35 print(try day5.pt2(alloc, input));
36 }
37 }
38}
39
40fn print(res: anytype) void {
41 const ArgsType = @TypeOf(res);
42 const res_type_info = @typeInfo(ArgsType);
43 if (res_type_info == .int) {
44 std.debug.print("{d}\n", .{res});
45 } else {
46 @compileError("print not implemented for this type");
47 }
48}