advent_of_code_2025/zig/src/main.zig

41 lines
1.3 KiB
Zig

const std = @import("std");
const debug = std.debug;
const Day = @import("utils/day.zig").Day;
const Map = std.AutoHashMap(usize, Day);
const import_days = struct {
pub const day01 = @import("days/day01.zig");
};
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const alloc = gpa.allocator();
const args = try std.process.argsAlloc(alloc);
defer std.process.argsFree(alloc, args);
if (args.len < 2) return error.InvalidArgs;
const arg_day_nb = try std.fmt.parseInt(usize, args[1], 10);
var days = Map.init(alloc);
defer days.deinit();
debug.print("Running day {d}\n", .{arg_day_nb});
inline for (comptime std.meta.declarations(import_days)) |decl| {
const day_str = decl.name[3..]; // Skip "day" prefix
const day_number = try std.fmt.parseInt(usize, day_str, 10);
if (day_number == arg_day_nb) {
const imported_day = @field(import_days, decl.name).Day;
const day = Day{ .nb = imported_day.nb, .part1 = imported_day.part1, .part2 = imported_day.part2 };
// TODO: get the correct input values
const buffer = "coucou";
day.part1(buffer);
day.part2(buffer);
break;
}
}
}