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