const std = @import("std"); const days = .{ @import("./day1.zig"), @import("./day2.zig"), @import("./day3.zig"), @import("./day4.zig"), @import("./day5.zig"), @import("./day6.zig"), }; pub fn main() !void { var args = std.process.args(); _ = args.skip(); const day_str = args.next() orelse { std.debug.print("Needs day arg\n", .{}); std.process.exit(0); }; const test_str = args.next() orelse ""; var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init; const allocator = gpa.allocator(); const day_num = try std.fmt.parseInt(u4, day_str, 10); const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day_num, test_str }); defer allocator.free(input_path); const input_file = try std.fs.cwd().openFile(input_path, .{}); defer input_file.close(); var buf: [4096]u8 = undefined; var reader = input_file.reader(&buf); const input_content = try reader.interface.allocRemaining(allocator, .unlimited); defer allocator.free(input_content); inline for (days, 1..) |day, i| { if (i == day_num) { std.debug.print("Day {d}\n\n", .{i}); const answer1, const answer2 = try day.run(allocator, input_content); std.debug.print("Answer P1: {d}\n", .{answer1}); std.debug.print("Answer P2: {d}\n", .{answer2}); break; } } }