41 lines
1.3 KiB
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;
|
|
}
|
|
}
|
|
}
|