summaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
new file mode 100644
index 0000000..79979e4
--- /dev/null
+++ b/src/main.zig
@@ -0,0 +1,46 @@
+const std = @import("std");
+const print = std.debug.print;
+
+const day01 = @import("day01.zig");
+const day02 = @import("day02.zig");
+const day03 = @import("day03.zig");
+const day04 = @import("day04.zig");
+const day05 = @import("day05.zig");
+const day06 = @import("day06.zig");
+const day07 = @import("day07.zig");
+
+pub fn main() !void {
+ if (std.os.argv.len != 3) {
+ print("Usage: {s} <day> <part> < <input> \n", .{std.os.argv[0]});
+ return;
+ }
+
+ var stdin_buf: [1024 * 1024]u8 = undefined;
+ var reader = std.fs.File.stdin().reader(&stdin_buf);
+ const stdin: *std.Io.Reader = &reader.interface;
+
+ var gpa = std.heap.GeneralPurposeAllocator(.{}){};
+ const allocator = gpa.allocator();
+ defer {
+ _ = gpa.deinit();
+ }
+
+ const args = try std.process.argsAlloc(allocator);
+ defer std.process.argsFree(allocator, args);
+
+ const day = std.fmt.parseInt(usize, args[1], 10) catch {
+ print("Not valid day format\n: {s}", .{args[1]});
+ return;
+ };
+
+ try switch (day) {
+ 1 => day01.solve(args[2], stdin, allocator),
+ 2 => day02.solve(args[2], stdin, allocator),
+ 3 => day03.solve(args[2], stdin, allocator),
+ 4 => day04.solve(args[2], stdin, allocator),
+ 5 => day05.solve(args[2], stdin, allocator),
+ 6 => day06.solve(args[2], stdin, allocator),
+ 7 => day07.solve(args[2], stdin, allocator),
+ else => print("Day not yet implemented", .{}),
+ };
+}