Advent of Code 2025 - Zig
1const std = @import("std"); 2const days = .{ 3 @import("./day1.zig"), 4 @import("./day2.zig"), 5 @import("./day3.zig"), 6 @import("./day4.zig"), 7 @import("./day5.zig"), 8}; 9 10pub fn main() !void { 11 var args = std.process.args(); 12 _ = args.skip(); 13 14 const day_str = args.next() orelse { 15 std.debug.print("Needs day arg\n", .{}); 16 std.process.exit(0); 17 }; 18 19 const test_str = args.next() orelse ""; 20 21 var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init; 22 const allocator = gpa.allocator(); 23 24 const day_num = try std.fmt.parseInt(u4, day_str, 10); 25 26 const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day_num, test_str }); 27 defer allocator.free(input_path); 28 29 const input_file = try std.fs.cwd().openFile(input_path, .{}); 30 defer input_file.close(); 31 32 var buf: [4096]u8 = undefined; 33 34 var reader = input_file.reader(&buf); 35 const input_content = try reader.interface.allocRemaining(allocator, .unlimited); 36 defer allocator.free(input_content); 37 38 inline for (days, 1..) |day, i| { 39 if (i == day_num) { 40 std.debug.print("Day {d}\n\n", .{i}); 41 42 const answer1, const answer2 = try day.run(allocator, input_content); 43 44 std.debug.print("Answer P1: {d}\n", .{answer1}); 45 std.debug.print("Answer P2: {d}\n", .{answer2}); 46 break; 47 } 48 } 49}