summaryrefslogtreecommitdiff
path: root/aoc25/tools/generate_main.zig
diff options
context:
space:
mode:
authorMathias Magnusson <mathias@magnusson.space>2025-12-01 14:04:18 +0100
committerMathias Magnusson <mathias@magnusson.space>2025-12-01 14:04:18 +0100
commitfb98b90b7da6d13594b0292b635cb85498583eb9 (patch)
treed576264c92888ca738725b23ccbb11b7636f74a3 /aoc25/tools/generate_main.zig
parent2f31753057ab67f3a7ba9d25b83e01aefd90505b (diff)
downloadprogramming-problem-solving-fb98b90b7da6d13594b0292b635cb85498583eb9.tar.gz
aoc2025: copy zig project from 2024 & upgrade to 0.15.2
Diffstat (limited to 'aoc25/tools/generate_main.zig')
-rw-r--r--aoc25/tools/generate_main.zig43
1 files changed, 43 insertions, 0 deletions
diff --git a/aoc25/tools/generate_main.zig b/aoc25/tools/generate_main.zig
new file mode 100644
index 0000000..f2ba9d0
--- /dev/null
+++ b/aoc25/tools/generate_main.zig
@@ -0,0 +1,43 @@
+const std = @import("std");
+
+pub fn main() !void {
+ var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
+ defer arena.deinit();
+ const allocator = arena.allocator();
+
+ const args = try std.process.argsAlloc(allocator);
+
+ if (args.len != 3) return error.InvalidArguments;
+
+ const part = try std.fmt.parseInt(u32, args[1], 10);
+ const output_file_path = args[2];
+
+ var output_file = try std.fs.cwd().createFile(output_file_path, .{});
+ defer output_file.close();
+ var output_buffer: [512]u8 = undefined;
+ var output_writer = output_file.writer(&output_buffer);
+ const output = &output_writer.interface;
+
+ try output.print(
+ \\const std = @import("std");
+ \\const solution = @import("solution");
+ \\
+ \\pub fn main() !void {{
+ \\ const data = @embedFile("input");
+ \\
+ \\ var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
+ \\ defer arena.deinit();
+ \\ const allocator = arena.allocator();
+ \\
+ \\ const input = try solution.parse(allocator, data);
+ \\ const output = try solution.part{}(allocator, input);
+ \\ var stdout_writer = std.fs.File.stdout().writer(&.{{}});
+ \\ const stdout = &stdout_writer.interface;
+ \\ try stdout.print("{{}}\n", .{{output}});
+ \\}}
+ ,
+ .{part},
+ );
+ try output.flush();
+ return std.process.cleanExit();
+}