diff --git a/build.zig b/build.zig index 1c63e7a..df29444 100644 --- a/build.zig +++ b/build.zig @@ -1,35 +1,33 @@ const std = @import("std"); +const nr_of_days = 12; + pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); - // TODO: This should be a non-exhaustive enum with one option: all - const day = b.option(u8, "day", "Build day") orelse 1; + const run_all = b.step("run", "Run all days"); - // TODO: Depending on the day chosen, only that day should compile, or all days - const exe = addDay(b, target, optimize, day); - b.installArtifact(exe); + const day_option = b.option(usize, "day", "Build day"); - // run step - const run_exe = b.addRunArtifact(exe); - const run_step = b.step("run", "Run the binary"); - run_step.dependOn(&run_exe.step); -} - -fn addDay( - b: *std.Build, - target: std.Build.ResolvedTarget, - optimize: std.builtin.OptimizeMode, - day: u8, -) *std.Build.Step.Compile { - return b.addExecutable(.{ - .name = "aoc2025", - .root_module = b.createModule(.{ - .root_source_file = b.path(b.fmt("src/day_{d}.zig", .{day})), - .target = target, - .optimize = optimize, - }), - }); + for (1..nr_of_days + 1) |day| { + const exe = b.addExecutable(.{ + .name = b.fmt("run-day{d:0>2}", .{day}), + .root_module = b.createModule(.{ + .root_source_file = b.path("src/main.zig"), + .target = target, + .optimize = optimize, + }), + }); + exe.root_module.addAnonymousImport("day", .{ + .root_source_file = b.path(b.fmt("src/days/day{d:0>2}.zig", .{day})), + }); + b.installArtifact(exe); + + if (day_option == null or day_option == day) { + const run_cmd = b.addRunArtifact(exe); + run_all.dependOn(&run_cmd.step); + } + } } diff --git a/src/day_1.zig b/src/day_1.zig deleted file mode 100644 index 2345db2..0000000 --- a/src/day_1.zig +++ /dev/null @@ -1,5 +0,0 @@ -const std = @import("std"); - -pub fn main() !void { -} - diff --git a/src/days/day01.zig b/src/days/day01.zig new file mode 100644 index 0000000..9da9d61 --- /dev/null +++ b/src/days/day01.zig @@ -0,0 +1,8 @@ +const std = @import("std"); + +pub const title = "Day 01: Secret Entrance"; + +pub fn run(_: std.mem.Allocator) !void { + const input = @embedFile("./input/day01.txt"); +} + diff --git a/src/days/day02.zig b/src/days/day02.zig new file mode 100644 index 0000000..4de3c68 --- /dev/null +++ b/src/days/day02.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 02"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day03.zig b/src/days/day03.zig new file mode 100644 index 0000000..eb7486c --- /dev/null +++ b/src/days/day03.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 03"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day04.zig b/src/days/day04.zig new file mode 100644 index 0000000..a8a0307 --- /dev/null +++ b/src/days/day04.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 04"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day05.zig b/src/days/day05.zig new file mode 100644 index 0000000..6d13a19 --- /dev/null +++ b/src/days/day05.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 05"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day06.zig b/src/days/day06.zig new file mode 100644 index 0000000..f265ab8 --- /dev/null +++ b/src/days/day06.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 06"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day07.zig b/src/days/day07.zig new file mode 100644 index 0000000..28eeee2 --- /dev/null +++ b/src/days/day07.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 07"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day08.zig b/src/days/day08.zig new file mode 100644 index 0000000..20383ea --- /dev/null +++ b/src/days/day08.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 08"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day09.zig b/src/days/day09.zig new file mode 100644 index 0000000..5b8cfab --- /dev/null +++ b/src/days/day09.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 09"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day10.zig b/src/days/day10.zig new file mode 100644 index 0000000..dbab95d --- /dev/null +++ b/src/days/day10.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 10"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day11.zig b/src/days/day11.zig new file mode 100644 index 0000000..d16d9d5 --- /dev/null +++ b/src/days/day11.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 11"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/day12.zig b/src/days/day12.zig new file mode 100644 index 0000000..e5f9176 --- /dev/null +++ b/src/days/day12.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub const title = "Day 12"; + +pub fn run(_: std.mem.Allocator) !void { +} + diff --git a/src/days/input/day01.txt b/src/days/input/day01.txt new file mode 100755 index 0000000..ab12118 --- /dev/null +++ b/src/days/input/day01.txt @@ -0,0 +1,4035 @@ +R11 +R8 +L47 +L20 +L25 +L40 +R50 +L44 +L38 +L32 +L39 +R46 +R40 +L13 +R48 +R20 +L21 +L46 +L43 +R7 +R4 +L38 +R30 +R22 +L39 +R44 +L11 +R18 +L22 +R25 +L14 +L12 +R42 +L37 +R40 +L31 +L40 +R2 +R22 +L10 +R42 +L37 +L2 +R19 +L50 +R39 +R20 +L23 +L41 +L34 +R72 +R99 +R29 +R46 +L46 +R23 +L64 +R96 +L19 +L36 +R59 +L59 +R58 +L39 +R65 +L47 +L38 +R14 +L57 +L89 +L92 +R84 +L59 +L40 +R62 +L22 +L41 +L59 +L61 +L39 +L2 +R42 +R60 +L56 +R5 +R72 +R64 +R62 +R74 +L21 +R88 +L35 +R47 +R2 +L45 +L12 +R71 +R84 +L51 +L65 +L6 +L953 +R86 +L11 +R22 +L922 +R101 +R70 +R46 +L72 +L45 +L78 +L91 +R569 +R63 +L28 +L71 +L30 +L34 +R80 +L80 +L2 +L70 +L63 +R73 +R468 +R80 +L42 +R66 +L710 +L76 +R94 +R886 +R90 +R326 +L20 +R608 +R64 +R15 +L33 +R746 +L180 +R93 +L957 +R33 +L289 +R33 +L48 +L855 +L30 +R469 +L66 +R43 +L25 +L92 +L54 +L42 +R28 +R88 +L39 +R70 +R20 +L98 +R98 +R59 +L47 +L98 +R825 +L39 +R1 +R98 +R51 +L64 +L45 +L41 +L48 +R48 +R211 +L43 +L946 +L22 +R61 +R39 +R5 +L68 +L37 +L97 +L3 +R19 +R48 +R33 +R98 +L81 +R83 +R40 +L59 +L981 +R37 +L931 +R54 +R61 +R625 +R54 +L471 +R1 +R9 +R69 +R92 +R84 +R41 +R75 +L566 +L34 +L64 +R964 +L291 +L39 +R294 +R20 +L70 +L14 +R82 +R70 +L52 +L29 +R10 +R19 +L369 +L63 +R79 +R27 +R11 +R15 +L79 +R12 +L29 +R57 +L43 +R7 +R42 +R556 +L423 +R63 +L22 +L49 +R8 +L15 +R28 +L2 +L11 +R174 +R27 +L1 +L52 +R748 +L74 +L47 +R43 +R61 +L755 +R113 +R79 +L24 +L9 +L83 +R35 +L81 +L54 +R231 +R38 +R77 +R44 +L90 +R30 +R17 +R727 +L74 +R46 +R367 +R10 +L54 +L32 +L37 +L1 +L437 +L90 +L52 +R80 +R32 +R9 +L60 +R873 +R965 +L33 +R887 +R19 +R37 +R71 +R51 +R50 +L1 +R868 +R32 +R94 +R89 +R255 +L21 +R40 +R12 +R618 +L87 +R36 +R864 +L83 +R34 +L51 +L82 +R148 +L692 +R14 +L795 +L11 +L41 +L41 +R47 +R81 +R8 +L40 +L96 +R525 +L22 +R97 +L839 +L53 +R91 +L99 +L690 +R90 +L99 +R20 +R22 +L943 +L28 +R50 +L22 +L86 +L3 +R47 +L12 +R82 +L28 +L816 +R16 +L831 +R31 +R67 +R518 +L28 +L39 +L18 +R15 +L15 +R17 +R25 +R49 +R831 +L89 +L33 +R86 +L28 +L217 +R59 +R28 +R631 +R45 +L4 +R14 +R25 +L349 +R10 +L89 +L11 +L54 +R91 +R3 +R93 +R67 +R64 +L64 +L99 +R882 +L76 +R93 +R852 +R69 +R24 +R675 +R80 +R58 +R36 +R6 +L37 +L47 +L48 +R32 +L47 +R647 +L836 +L64 +L62 +L51 +R13 +R61 +L361 +L90 +L69 +R368 +R91 +R40 +L40 +R16 +R43 +R41 +L73 +L436 +L65 +L369 +R61 +L18 +R67 +L67 +L229 +R61 +R4 +L8 +R972 +L53 +L15 +L32 +L159 +R2 +R98 +R71 +R88 +R339 +R261 +L375 +L25 +R659 +R722 +R319 +L660 +L61 +L61 +R82 +L15 +L76 +R26 +L35 +L22 +L49 +L3 +R74 +L93 +R40 +L34 +L24 +R111 +L32 +L68 +R79 +L149 +L41 +L34 +R87 +R58 +R145 +L45 +L62 +L65 +L13 +L860 +R99 +L99 +R9 +L9 +L54 +R54 +L701 +L99 +R215 +R51 +R19 +L85 +R9 +L9 +R551 +R58 +R97 +L6 +R68 +R117 +R27 +L12 +L638 +R58 +R772 +R39 +L31 +L870 +R34 +R61 +R129 +R79 +R81 +L814 +R30 +R74 +R310 +L9 +R95 +R485 +R15 +L65 +L41 +L394 +R27 +R73 +L43 +R23 +R3 +L83 +R173 +L73 +L46 +R78 +L79 +L53 +R10 +R90 +R86 +R14 +L90 +R45 +R56 +R89 +L60 +L77 +R54 +R483 +L62 +L827 +L54 +L183 +R966 +R37 +R19 +L40 +L81 +L75 +R3 +L61 +L460 +R807 +L6 +R375 +L258 +R36 +R54 +L5 +R22 +L11 +L534 +L45 +L17 +L165 +L38 +L190 +R61 +R32 +R490 +L90 +L4 +L96 +L52 +R426 +R8 +R18 +L94 +R97 +R80 +R317 +R356 +R6 +R83 +R74 +R75 +L34 +R89 +L49 +L46 +L72 +R5 +R13 +L857 +L4 +L37 +L41 +R542 +L814 +L74 +L7 +R313 +R21 +L83 +R41 +L30 +R88 +R75 +R353 +L589 +L97 +L82 +R82 +R92 +L75 +L17 +R221 +R79 +R96 +R228 +R10 +R25 +R41 +R26 +L32 +L94 +L46 +L96 +L5 +R57 +L7 +R94 +L20 +L957 +R10 +R12 +L87 +R26 +R19 +R69 +R31 +R39 +L39 +L50 +L76 +R62 +R1 +R908 +R4 +R51 +R60 +R58 +L18 +R503 +L903 +R1 +R25 +L54 +R97 +R31 +R98 +L43 +R216 +L71 +L93 +L17 +R98 +R261 +R3 +L83 +R68 +R9 +R67 +R932 +R87 +R509 +R76 +L949 +R32 +R607 +R55 +L43 +L19 +L2 +L45 +L650 +R51 +R46 +L15 +L29 +L56 +R34 +L73 +R839 +R924 +R59 +R46 +L7 +L12 +L70 +L40 +R33 +L33 +R35 +R265 +R71 +L5 +L84 +R18 +R71 +R29 +R57 +R947 +L4 +L42 +L58 +R94 +R23 +R28 +L93 +R16 +L835 +R243 +R42 +R72 +L51 +L68 +R58 +R43 +R14 +R4 +L35 +L55 +R38 +R649 +R59 +L50 +R39 +R65 +L1 +R1 +L60 +L10 +R81 +R63 +R73 +R853 +R89 +L35 +R46 +R41 +L223 +L67 +L83 +L96 +R67 +L18 +L33 +R12 +L745 +L16 +L339 +R903 +R18 +R79 +R69 +R31 +R36 +L536 +R248 +R44 +R8 +L790 +R94 +L55 +L12 +R2 +L82 +R44 +L801 +L897 +R85 +R83 +R60 +R40 +L71 +R940 +R49 +R13 +R98 +R52 +R843 +L589 +R25 +R76 +L7 +L61 +R291 +L30 +R73 +R25 +L98 +R88 +R12 +L87 +L92 +L19 +L40 +L69 +R919 +R87 +L99 +R55 +R59 +R3 +R6 +R563 +R98 +R30 +R909 +R37 +L57 +L36 +L84 +R17 +R819 +R81 +R59 +R41 +L63 +L91 +L39 +L5 +L21 +L741 +R667 +R93 +R38 +L25 +L37 +R62 +R75 +R57 +R34 +L4 +R25 +R23 +L46 +L96 +L6 +L829 +L53 +R82 +R23 +L24 +R1 +R85 +L5 +R70 +R28 +R68 +L46 +R655 +L55 +R37 +R82 +L219 +L33 +L81 +R661 +R44 +L91 +L37 +L4 +L576 +R17 +R740 +L85 +R224 +L9 +R648 +L94 +R37 +R39 +R54 +L999 +R91 +L17 +R42 +L471 +L53 +L913 +L341 +L93 +R40 +R60 +R11 +L25 +L486 +R53 +R76 +L19 +L70 +L95 +L45 +L48 +R91 +R62 +L7 +R649 +R99 +L56 +L27 +R37 +L68 +R187 +R81 +L263 +L57 +R8 +L22 +R334 +L74 +L26 +L71 +R34 +R95 +L68 +L90 +R457 +R17 +R796 +L70 +L13 +R113 +L131 +R31 +L39 +L72 +R999 +L57 +L31 +L12 +L11 +L60 +R83 +L429 +R29 +L39 +R12 +R427 +R445 +R84 +R751 +L29 +R8 +R78 +L68 +L69 +R8 +R689 +L583 +R886 +L41 +L31 +R79 +L27 +R27 +R93 +R46 +L91 +R45 +R55 +R5 +L260 +L84 +L16 +L66 +L178 +R13 +R85 +L70 +R14 +L402 +R904 +L954 +L319 +L50 +L85 +R769 +R58 +R81 +R96 +R4 +R33 +L96 +R63 +R22 +L5 +R783 +R834 +L40 +R45 +R961 +R35 +L35 +L996 +L365 +R61 +L730 +R896 +L74 +R49 +L76 +R92 +L57 +R501 +L59 +R12 +R46 +R89 +L67 +L22 +L37 +L263 +L32 +L924 +R47 +R129 +L42 +L78 +R53 +R805 +L58 +L71 +R74 +L3 +L79 +L46 +L33 +R58 +R62 +R884 +R2 +R52 +R775 +L75 +R87 +R39 +R27 +R47 +R13 +L61 +R360 +L43 +R51 +L562 +L92 +L269 +L71 +L26 +R482 +L65 +L117 +R174 +R7 +L9 +L23 +R53 +R97 +L409 +R10 +L759 +R240 +R19 +R93 +L972 +L66 +R83 +L38 +L54 +R54 +R861 +L94 +R132 +R1 +L96 +L4 +L42 +R342 +L7 +L93 +R10 +R76 +L75 +R48 +R56 +R492 +L327 +R20 +R911 +L11 +R49 +R76 +R75 +L193 +L46 +R12 +L59 +L14 +R95 +R24 +R91 +R46 +R44 +L83 +L17 +R439 +L473 +L19 +L47 +R57 +L36 +R83 +L626 +R62 +R28 +R233 +R23 +L24 +R64 +L40 +R22 +R92 +R43 +R58 +R61 +R41 +R459 +R77 +L77 +R13 +R871 +L761 +L223 +L72 +R72 +L54 +L46 +R12 +L12 +L69 +L10 +L34 +L60 +L62 +R35 +L20 +L72 +R92 +R92 +L92 +R19 +L19 +L9 +R177 +R95 +R29 +L53 +R261 +R73 +L73 +L70 +R74 +L28 +L76 +R62 +R738 +R46 +R71 +R28 +L87 +R68 +R85 +L89 +R23 +R155 +L39 +L49 +L12 +R48 +L86 +L10 +L917 +R24 +L49 +R19 +L49 +L80 +R32 +L40 +R86 +R522 +L29 +L17 +R421 +R544 +R739 +L28 +L33 +L90 +L74 +R18 +R23 +R98 +L8 +L90 +R26 +R59 +L59 +L37 +R65 +R1 +L29 +R30 +R74 +R596 +R73 +L73 +R78 +L86 +L16 +L476 +R37 +L37 +R23 +L23 +R27 +R4 +R69 +L46 +L54 +L87 +L26 +L54 +R55 +L78 +L10 +L80 +L871 +L90 +L48 +R82 +L63 +L630 +L7 +R607 +R27 +L7 +L202 +R72 +R810 +L233 +R571 +L38 +R74 +R26 +L2 +R94 +R8 +L47 +R47 +R46 +L65 +R19 +R579 +L79 +L445 +L481 +L93 +L796 +R15 +L127 +L91 +R80 +L15 +L95 +L57 +R51 +R3 +R51 +L20 +R95 +R1 +L863 +L13 +L680 +R55 +L175 +L47 +R47 +L899 +L796 +L605 +R516 +R112 +R79 +R54 +L9 +L52 +L45 +R73 +R576 +R96 +L15 +R794 +R71 +R650 +L45 +L207 +L78 +R2 +L72 +R83 +L7 +L71 +L5 +L390 +L38 +R28 +R90 +L90 +R38 +R62 +R93 +L40 +R62 +R236 +R49 +R924 +L27 +L60 +L37 +R63 +L63 +R12 +L36 +R24 +R30 +L630 +L12 +R62 +R586 +L263 +L73 +R4 +L404 +R2 +L67 +R65 +R69 +R87 +R593 +L47 +R22 +L16 +L55 +R52 +R89 +R6 +R283 +L24 +R555 +R86 +R93 +R13 +L62 +L82 +L62 +R22 +R30 +R48 +R42 +L8 +L34 +L6 +R397 +L78 +R87 +R231 +R69 +L35 +R568 +L5 +R72 +R60 +R99 +L340 +R81 +R76 +L176 +R14 +L58 +R44 +L86 +R52 +L66 +R667 +R31 +R2 +R863 +R12 +L75 +L79 +R67 +R726 +R86 +R72 +L72 +R35 +L86 +L32 +R24 +L30 +L96 +L235 +R57 +R28 +R17 +R27 +R91 +L10 +L90 +L918 +L17 +L30 +R21 +R16 +R28 +L818 +L48 +L1 +L92 +L41 +R19 +L724 +L77 +L96 +R47 +L669 +L9 +L43 +R47 +R5 +R14 +R655 +R26 +L62 +R88 +L25 +L57 +L39 +L72 +R72 +R46 +L77 +R61 +R34 +R20 +L84 +R71 +L71 +R45 +L83 +R57 +L527 +L39 +L69 +L72 +R88 +L52 +R752 +L21 +L94 +R629 +L11 +R97 +R62 +L62 +R53 +L80 +L77 +L89 +R737 +L89 +R24 +R62 +L72 +R31 +L86 +R86 +L499 +L67 +L6 +L96 +L87 +L8 +L61 +L29 +R93 +L27 +R61 +R26 +R67 +R33 +R782 +L963 +R16 +R804 +L91 +R82 +R46 +L871 +R95 +R586 +R14 +R19 +R60 +L24 +L55 +R58 +L69 +R12 +R99 +L54 +L840 +R298 +R76 +L62 +L8 +L78 +L89 +L43 +R80 +L64 +R7 +L54 +R89 +R942 +L44 +L56 +R83 +L65 +L64 +L65 +L569 +L753 +L767 +R26 +R90 +R84 +R43 +R57 +R56 +L56 +R93 +R866 +L479 +L80 +R403 +L754 +R629 +R222 +R237 +R63 +L92 +L8 +L64 +R85 +L21 +R61 +R39 +L312 +R94 +L82 +R85 +L63 +R91 +L13 +R13 +R76 +R11 +L419 +R55 +R89 +R11 +R80 +R84 +R73 +L98 +R25 +L253 +L17 +L37 +L42 +L769 +R87 +R5 +R68 +R64 +R50 +R12 +R66 +R66 +L69 +R69 +L601 +L99 +L16 +L27 +R25 +L64 +R427 +L71 +L66 +R25 +L2 +L631 +R353 +R52 +L86 +R49 +R32 +L235 +R72 +L84 +L71 +R73 +R345 +R75 +R6 +R19 +L15 +R54 +R4 +R6 +R66 +L15 +L45 +R696 +R362 +L13 +R44 +R181 +R95 +R80 +R745 +R55 +L77 +R77 +L55 +R9 +R746 +R221 +R239 +R40 +L74 +L26 +L6 +R37 +L90 +L48 +R921 +R86 +R668 +R43 +R89 +R909 +L26 +R17 +L83 +L10 +R93 +L54 +L65 +R19 +L44 +L90 +L70 +L84 +R23 +R55 +L39 +L72 +R21 +R53 +L553 +L98 +L68 +R93 +R73 +L15 +R15 +L36 +R92 +L52 +L4 +L62 +R936 +L174 +R81 +R60 +R59 +R98 +L54 +L68 +L576 +R56 +L31 +L25 +R885 +L31 +R46 +L69 +L77 +L60 +L686 +L8 +R4 +R20 +R86 +L43 +R81 +R52 +R50 +R35 +L785 +L15 +R88 +L73 +R14 +R495 +L63 +R54 +R80 +L23 +R93 +L29 +R726 +L812 +L66 +R2 +R24 +R5 +L67 +R24 +L29 +R7 +R79 +L108 +L422 +R314 +L98 +R176 +R77 +L25 +R35 +R725 +R56 +L444 +L81 +L419 +R48 +L19 +L86 +R857 +L57 +R15 +L1 +R43 +L42 +L329 +L82 +L99 +R3 +L97 +L27 +L40 +L35 +R93 +R155 +R61 +L11 +L61 +R911 +L60 +R87 +L27 +R18 +L84 +L15 +L70 +L63 +L386 +R44 +L727 +R655 +L72 +R5 +R61 +L68 +L21 +L61 +L39 +R23 +L49 +R49 +R57 +L76 +R3 +R97 +R19 +L573 +L27 +R357 +R543 +L820 +R91 +L71 +R95 +L41 +R36 +R291 +L881 +R97 +R3 +R47 +L95 +L54 +L98 +L43 +L1 +L56 +L28 +L572 +R30 +R70 +L969 +R69 +L73 +R73 +L18 +R218 +R97 +L344 +L37 +R26 +R35 +R23 +R37 +L85 +R37 +R11 +L796 +R27 +L56 +L75 +L29 +R29 +R10 +L10 +R43 +R22 +L65 +L33 +L60 +R64 +L71 +R21 +R21 +L942 +R77 +R74 +L568 +L83 +L782 +R82 +R873 +R627 +R1 +R58 +L59 +R14 +R9 +R69 +R41 +L33 +L731 +R31 +L99 +L41 +R45 +L14 +R14 +L5 +R84 +R59 +L52 +R38 +L962 +L24 +L88 +L831 +R801 +R58 +R82 +R81 +L12 +R66 +L90 +L10 +L485 +R85 +L38 +R23 +L83 +L402 +R35 +R802 +L70 +R33 +R644 +R38 +R18 +L19 +L81 +R4 +L89 +L327 +R28 +L3 +R76 +L36 +R64 +L77 +L45 +L45 +L241 +R14 +L46 +L277 +R345 +R17 +L62 +L945 +L55 +R91 +L56 +L72 +L63 +R65 +R58 +R77 +L38 +L44 +R60 +R22 +L35 +L254 +L11 +L48 +L98 +L67 +L13 +L93 +R664 +L73 +R28 +R33 +L97 +R31 +R15 +L82 +L84 +R77 +L93 +R558 +R99 +R843 +L444 +L6 +L31 +R88 +L37 +R26 +L94 +L2 +L27 +L885 +R170 +L46 +L12 +L122 +R899 +L3 +R26 +R16 +L2 +R70 +L470 +R767 +L481 +R376 +R24 +L35 +L19 +L54 +R58 +R703 +L21 +L11 +L121 +R8 +R968 +L44 +R67 +L999 +R40 +L6 +L2 +R68 +L834 +L11 +R80 +L35 +L19 +L89 +R85 +L77 +L96 +R96 +L67 +L58 +R996 +L60 +R2 +R87 +L644 +L56 +R88 +R93 +L381 +R60 +R40 +R98 +L73 +L525 +L71 +L656 +L93 +R20 +L29 +L62 +R68 +R652 +R71 +R97 +L29 +R32 +R14 +L14 +R52 +L87 +R683 +L32 +L215 +R20 +L21 +L379 +R279 +L73 +R73 +R19 +L219 +R11 +R11 +R78 +R98 +R75 +L73 +L25 +L76 +R14 +L59 +L105 +L20 +L41 +R12 +R824 +R955 +L421 +R42 +L78 +R378 +R33 +R67 +L371 +L45 +L90 +R6 +R993 +R49 +R90 +L32 +L53 +L90 +L57 +L23 +L42 +L535 +L26 +R26 +L67 +L409 +R20 +R56 +L39 +L92 +R16 +L85 +L86 +R95 +R84 +R26 +L222 +L97 +R33 +L9 +L24 +R23 +L97 +R56 +L82 +L601 +L99 +L98 +L93 +R15 +R22 +R54 +L16 +L984 +L81 +L19 +L12 +R16 +R35 +R61 +R320 +R80 +R960 +R33 +L47 +R54 +L82 +L45 +R16 +L89 +L73 +L36 +R6 +R981 +R22 +R30 +L60 +R30 +R569 +L415 +L10 +L644 +R41 +R46 +L41 +L5 +L53 +L88 +R437 +L73 +R990 +L76 +L478 +R474 +L74 +R787 +L70 +L60 +L279 +R52 +L30 +L95 +R695 +R55 +L77 +R87 +R18 +L83 +R23 +R8 +R91 +R78 +L65 +L35 +R92 +R308 +R95 +R84 +L113 +L36 +L66 +R45 +L772 +L857 +L34 +L46 +L762 +R62 +R51 +R91 +R58 +R61 +L48 +L42 +L98 +L73 +L8 +R36 +R86 +L203 +R190 +R67 +R51 +R144 +R52 +L30 +R715 +R38 +L27 +R89 +L74 +L8 +R82 +L28 +R73 +R18 +L263 +R60 +L55 +R395 +R749 +R97 +L46 +L91 +L509 +R580 +R88 +L14 +R446 +R23 +R34 +L1 +L69 +L4 +L52 +R69 +L93 +L44 +R355 +R382 +R49 +R292 +L6 +L13 +R3 +R12 +R13 +L50 +L70 +L463 +R74 +L9 +R496 +R48 +L75 +L28 +R601 +L56 +L18 +R86 +R82 +L68 +R92 +R42 +L42 +L83 +L99 +R90 +R71 +L71 +R48 +R52 +R11 +L90 +R79 +L52 +L48 +L21 +R4 +L18 +R935 +L50 +L2 +R26 +L74 +R4 +L39 +L665 +R79 +L79 +L604 +R76 +L873 +L897 +L571 +L31 +L9 +R9 +R93 +L10 +L883 +R79 +R21 +R810 +R490 +L99 +R75 +R17 +R627 +R380 +R15 +L59 +L56 +R1 +R27 +R72 +L959 +L90 +L6 +R34 +R21 +R36 +R71 +L7 +R17 +L17 +R20 +L931 +L54 +R356 +L58 +L77 +R44 +L1 +R1 +L158 +R27 +R10 +L129 +R50 +R3 +L303 +L49 +L53 +L82 +L77 +L62 +L92 +L53 +L35 +L32 +L356 +L4 +L5 +L60 +R13 +L165 +R55 +R57 +R13 +R87 +L33 +L385 +R18 +L66 +L58 +L76 +L94 +R64 +L70 +R943 +L43 +L44 +R25 +R19 +R87 +R22 +L50 +R41 +R12 +L994 +R24 +L25 +R83 +L72 +L47 +L81 +R644 +R81 +R4 +L29 +L92 +L58 +L50 +L991 +L15 +R47 +R59 +R51 +L51 +R4 +R451 +L94 +L361 +L818 +L82 +L9 +L46 +R612 +L57 +L44 +L850 +R94 +R99 +R4 +R97 +R29 +L705 +L32 +L692 +R86 +R45 +L22 +R91 +L11 +L75 +L26 +L788 +L63 +L637 +L44 +L356 +L368 +L90 +R58 +R65 +R33 +R2 +L449 +R49 +R95 +R805 +R76 +R24 +R208 +R46 +L1 +L79 +R4 +R37 +R221 +R40 +L8 +R945 +L42 +R394 +R91 +L1 +R62 +L63 +R39 +L93 +R65 +L65 +L31 +L26 +R71 +R9 +L23 +L6 +R67 +R39 +L95 +R645 +R50 +L446 +R71 +R36 +R28 +R11 +L80 +R22 +R58 +R85 +L85 +L19 +R96 +L877 +L83 +R83 +L26 +R36 +R318 +L15 +L58 +R86 +L3 +R16 +R14 +R845 +R38 +R349 +R32 +R77 +L9 +R615 +L25 +L490 +L809 +R9 +R48 +L73 +R71 +L59 +R14 +R64 +L89 +R347 +L23 +R80 +R93 +R678 +L25 +R603 +L47 +L682 +L3 +L23 +L76 +L44 +R83 +L67 +L270 +L23 +L77 +L28 +R28 +L27 +L527 +L46 +L89 +R789 +L33 +R90 +R47 +R96 +R63 +R617 +R86 +R34 +L491 +L9 +L10 +L583 +L24 +R43 +L2 +L27 +R23 +R81 +R99 +L53 +L57 +R31 +L83 +R62 +L36 +L64 +R179 +R40 +L19 +R863 +L63 +L62 +R41 +L65 +L14 +R3 +R359 +L916 +R54 +R16 +R90 +L66 +L30 +R94 +L17 +R13 +R26 +R74 +L72 +L35 +R7 +L38 +L34 +R27 +L578 +L77 +R89 +L20 +L787 +L21 +L22 +L56 +R48 +R87 +R13 +R369 +L37 +L76 +L59 +R732 +L116 +R56 +L496 +R232 +R114 +R13 +L63 +L520 +R75 +L55 +L59 +R59 +L65 +R80 +L6 +R91 +L88 +L12 +R48 +R90 +R162 +L722 +R90 +R917 +L271 +R86 +R32 +R18 +R417 +L67 +R44 +R14 +L540 +R54 +L46 +R410 +L2 +R66 +L7 +R611 +R91 +R5 +R30 +R72 +R38 +L94 +R54 +L656 +L44 +L13 +L75 +L36 +L44 +R29 +L41 +R33 +L53 +L27 +L73 +R7 +R18 +R47 +L452 +L120 +R72 +R73 +L37 +R423 +L31 +L17 +L83 +L51 +L27 +R91 +L50 +L70 +R10 +L83 +R74 +L1 +R107 +R37 +L84 +R88 +L41 +L87 +L427 +L86 +R51 +R31 +L861 +L843 +L75 +R723 +R74 +L19 +R219 +L139 +R29 +R10 +L528 +R28 +L67 +R58 +R72 +L86 +R35 +R38 +L89 +L20 +R43 +L84 +R5 +L5 +R41 +R50 +L6 +R97 +R45 +L27 +R405 +L49 +R44 +R76 +L63 +R374 +L87 +R149 +L49 +R86 +R14 +L14 +L29 +R43 +L44 +R44 +L6 +R84 +R22 +R27 +L27 +L57 +R298 +L63 +L642 +L799 +L73 +R36 +R19 +L19 +L13 +R71 +L58 +R38 +R162 +L594 +L6 +L39 +L861 +L143 +R43 +L5 +R5 +L45 +L26 +R949 +L78 +L94 +R94 +R78 +L578 +L642 +R914 +R51 +R70 +L93 +R69 +L21 +R9 +R43 +R94 +L64 +R56 +L454 +R49 +R19 +L49 +L16 +R65 +R146 +R28 +R43 +R50 +R33 +R54 +R904 +L91 +L367 +L99 +R99 +L53 +L58 +R11 +L56 +L48 +R65 +R39 +L329 +R291 +R26 +R12 +R77 +R23 +R42 +L363 +L9 +L970 +L22 +R27 +R95 +L7 +R449 +L82 +R40 +R59 +R41 +R691 +L755 +L18 +R72 +L90 +L84 +R71 +R54 +R633 +L74 +L24 +R24 +L78 +R78 +R959 +R41 +L79 +R79 +R87 +R59 +L67 +R54 +L732 +R99 +L84 +R67 +R32 +R128 +R79 +L38 +R7 +R9 +R74 +R26 +L72 +R72 +R92 +R72 +R1 +R63 +R72 +R42 +R58 +R53 +R747 +L949 +R68 +L19 +R84 +R41 +L25 +R94 +R6 +L59 +R82 +L994 +L13 +R909 +R316 +R559 +L840 +L95 +R67 +L51 +L26 +R45 +L55 +R16 +L61 +R47 +R53 +L71 +R8 +L37 +L12 +L188 +L48 +R79 +R69 +R410 +L10 +R733 +L33 +L63 +R16 +R148 +L701 +L148 +L45 +R93 +L94 +R75 +R1 +R736 +R105 +L75 +R91 +R61 +L35 +L65 +R30 +L76 +L75 +L79 +R104 +L4 +R28 +R72 +L83 +R65 +L88 +L4 +R10 +R89 +L67 +L48 +R90 +L34 +R49 +R35 +L14 +R74 +R89 +L11 +L38 +L91 +R77 +L56 +L7 +R68 +L50 +R465 +L20 +R72 +R23 +R17 +R56 +L3 +R318 +R12 +R284 +L79 +R26 +R74 +L86 +R86 +R745 +R755 +R275 +R65 +R60 +R32 +L42 +L951 +R846 +L48 +R699 +L746 +L94 +L84 +R548 +L60 +L7 +R224 +L80 +R75 +L61 +L77 +R10 +L84 +R84 +R48 +L748 +R16 +R74 +R76 +L50 +R99 +R601 +R21 +R379 +R79 +R29 +R48 +L482 +R51 +R2 +L13 +L14 +L98 +L2 +L84 +L87 +R71 +R76 +R45 +L821 +R38 +L643 +R295 +L239 +L951 +R65 +L65 +L5 +R835 +R70 +L64 +L36 +L76 +R46 +R830 +L75 +R646 +L971 +L674 +R74 +R76 +L97 +L91 +R86 +R26 +L3 +L27 +R30 +R57 +R779 +R64 +L78 +R78 +R49 +L49 +L34 +L750 +R61 +R23 +L895 +R61 +R34 +R52 +R67 +L42 +L77 +R43 +L682 +L46 +R1 +R384 +R22 +L22 +R11 +L11 +R28 +R372 +R20 +L63 +L57 +R85 +R19 +L4 +R59 +L91 +L90 +R62 +R60 +L40 +L60 +R148 +R52 +R40 +R14 +R47 +L70 +R69 +L721 +L79 +R2 +L42 +R99 +L13 +R9 +R46 +L1 +R321 +L46 +L675 +L40 +R61 +R79 +L15 +R63 +L88 +L33 +L20 +L40 +R426 +R57 +R76 +R419 +R355 +L30 +L70 +L91 +R489 +L80 +L1 +L20 +R35 +L939 +L93 +L73 +R73 +R22 +L94 +R57 +L85 +R29 +R27 +L56 +L85 +L54 +R976 +L43 +L94 +R49 +L87 +R49 +L753 +L58 +L65 +R29 +R98 +R73 +R12 +R13 +R93 +R41 +L94 +L95 +R95 +R90 +R10 +R96 +L59 +R63 +L57 +L43 +R67 +L67 +R87 +L89 +L43 +R645 +L822 +R26 +L82 +R421 +R57 +L69 +R99 +R34 +R36 +R38 +R62 +L25 +L210 +R79 +R56 +L86 +L14 +L88 +L619 +L93 +R45 +R355 +R6 +L99 +R178 +L91 +L48 +R54 +R86 +L75 +L11 +L75 +L51 +L88 +L86 +R6 +R94 +R13 +L82 +R16 +R83 +L30 +R35 +L68 +R64 +R39 +R1 +L71 +L59 +R61 +L93 +L46 +R98 +L825 +L65 +R98 +R773 +R51 +L666 +L51 +L41 +L71 +L52 +R51 +L74 +R11 +L46 +L54 +R66 +L36 +L58 +L72 +L39 +L13 +R8 +R12 +R34 +R98 +L23 +L16 +R75 +L72 +L53 +R96 +R46 +L553 +R95 +R5 +L52 +L43 +L61 +L528 +R2 +R39 +R27 +L56 +R881 +L86 +R62 +R15 +L82 +L18 +L73 +L58 +L69 +R9 +R91 +L1 +R601 +R53 +L53 +L41 +R41 +R165 +L13 +L52 +L85 +R82 +L29 +R932 +R91 +R95 +L86 +R36 +L64 +L72 +L76 +R79 +R56 +L36 +R77 +R19 +L66 +R12 +L6 +L98 +R90 +R261 +L34 +R35 +R62 +L2 +R68 +R817 +R95 +R47 +L92 +R92 +L80 +R1 +R82 +L40 +L63 +L336 +L64 +R93 +L558 +R83 +L18 +L4 +R89 +L30 +R46 +R99 +R25 +R17 +R80 +R7 +L143 +L80 +R212 +R376 +R6 +L66 +R66 +R350 +R789 +L71 +L20 +L89 +L59 +L26 +R24 +R2 +L84 +R91 +R93 +L57 +R938 +R82 +R540 +L76 +L7 +L91 +R38 +L67 +R952 +R26 +R41 +R19 +R75 +L6 +L33 +R90 +L664 +R35 +L50 +R23 +R86 +L49 +R15 +L22 +L38 +L92 +L208 +R46 +L813 +R98 +L70 +R39 +L911 +L89 +L72 +L90 +L38 +L78 +R4 +R74 +R63 +R31 +L675 +R489 +L508 +L64 +R664 +R45 +R23 +L9 +R31 +L690 +R75 +L13 +L76 +R68 +L58 +R4 +L56 +L243 +R99 +L77 +L23 +L747 +L95 +R42 +R75 +R6 +L81 +L89 +L515 +L67 +R871 +L98 +L25 +L77 +L15 +R644 +L29 +R521 +L580 +L41 +L6 +R977 +R29 +R81 +R42 +R8 +L3 +R43 +R42 +R14 +R73 +L31 +R31 +R24 +L50 +L117 +L62 +L77 +R346 +R73 +R30 +L56 +L946 +L902 +R37 +R632 +R68 +R74 +R30 +R54 +L65 +L42 +R50 +L801 +R62 +R87 +L49 +L403 +R3 +R63 +R23 +L86 +R62 +R7 +L4 +R35 +L852 +R376 +L24 +L56 +L44 +R527 +R8 +R86 +R15 +R8 +R56 +L68 +R68 +L363 +R799 +L70 +R34 +R28 +R61 +R73 +R91 +L53 +R40 +L68 +R76 +R52 +L35 +R52 +L83 +L44 +R10 +R4 +R96 +L42 +L356 +R52 +L52 +R58 +R15 +L67 +L224 +R9 +R76 +L90 +L97 +R14 +L611 +L86 +R823 +L59 +L65 +L98 +L82 +L618 +R7 +R409 +R49 +R327 +L92 +R66 +R138 +L4 +R6 +R8 +R34 +L98 +L5 +R71 +R497 +R15 +R5 +R67 +L45 +R288 +L4 +L57 +L44 +R318 +L19 +R65 +R53 +R45 +L75 +R94 +L81 +L55 +R17 +L48 +R859 +L95 +L45 +L867 +R96 +R77 +R50 +L42 +L85 +L97 +R14 +R502 +L77 +R622 +L64 +R13 +L813 +L56 +L99 +R39 +L84 +L46 +R207 +R28 +R611 +L491 +L8 +R51 +R48 +L47 +R4 +R86 +R77 +R22 +L98 +L473 +L71 +L36 +R36 +R405 +L253 +L52 +R24 +R344 +R32 +R84 +R94 +L570 +L55 +R3 +L9 +L79 +R80 +R65 +L80 +L44 +R11 +L63 +L24 +R97 +L93 +L17 +L360 +L33 +R69 +L48 +R3 +L16 +R142 +L42 +L12 +R8 +L90 +R479 +L64 +R93 +L16 +L13 +L96 +R275 +R4 +L56 +L27 +R98 +R37 +L10 +R75 +R133 +R31 +R10 +R606 +L55 +R40 +L65 +R34 +L24 +R37 +L7 +R560 +L94 +R33 +L39 +R24 +R3 +R52 +L50 +L29 +R72 +L114 +L58 +R14 +L14 +L14 +L47 +L39 +L42 +L48 +L10 +L30 +R68 +R15 +L53 +R49 +R53 +R898 +L99 +L16 +L52 +L33 +L482 +R28 +R64 +R32 +R58 +L383 +R83 +R75 +L231 +R56 +L9 +R9 +R80 +L51 +R57 +R49 +R73 +L42 +R28 +R76 +L69 +R939 +R4 +R61 +L82 +R20 +L43 +R86 +L186 +R71 +R84 +L455 +R83 +L18 +R638 +R773 +L76 +L666 +R37 +L128 +L43 +R582 +R718 +R9 +R91 +L32 +R171 +L89 +R22 +R40 +R88 +L88 +R41 +L28 +L25 +L196 +R85 +L90 +L99 +R759 +R142 +L20 +L53 +L6 +R5 +L95 +R14 +R43 +R11 +L548 +L52 +L80 +R980 +L68 +R89 +L21 +R59 +L32 +R73 +R1 +L62 +L239 +R18 +L78 +R55 +R20 +R385 +R2 +L2 +R835 +L35 +R19 +L63 +R644 +R949 +L96 +R47 +L171 +R71 +R77 +L65 +R45 +L130 +L16 +L11 +L3 +R3 +R16 +R62 +R420 +R21 +L19 +R85 +R15 +R56 +R50 +R94 +L45 +R73 +L66 +L62 +L21 +L79 +R85 +L75 +R90 +R81 +R25 +R77 +L427 +L86 +R30 +R247 +R78 +R47 +L772 +L96 +R296 +R5 +R31 +L54 +L1 +L733 +R297 +L45 +R57 +L54 +R97 +R64 +L25 +R74 +L413 +L5 +R537 +L132 +R783 +R64 +L334 +R87 +L7 +R7 +L1 +R96 +L74 +R42 +L72 +R89 +L4 +R24 +L18 +L75 +R93 +L50 +L50 +L35 +L34 +R97 +R72 +R31 +L29 +R98 +R74 +L74 +L2 +L1 +L7 +R10 +R70 +R30 +R10 +L74 +L93 +R57 +L53 +R53 +L45 +R45 +L37 +R80 +R39 +R98 +L61 +L35 +L12 +L33 +R91 +R58 +R14 +R59 +R86 +L47 +L31 +L24 +L19 +L39 +L30 +L8 +L45 +L32 +R49 +L33 +L32 +L41 +L11 +L22 +R33 +R5 +R41 +L17 +R31 +R43 +R32 +R38 +L46 +R10 +R20 +L27 +L25 +L46 +L10 +L47 +L40 +R41 +R41 +R33 +L50 +L5 +R49 +R40 +R39 +L33 +R49 +L7 +R3 +L43 +R13 +R50 +R41 +L31 +R44 +L24 +R10 diff --git a/src/main.zig b/src/main.zig new file mode 100644 index 0000000..12077fe --- /dev/null +++ b/src/main.zig @@ -0,0 +1,15 @@ +const std = @import("std"); + +const day = @import("day"); + +pub fn main() !void { + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena.deinit(); + + const allocator = arena.allocator(); + + std.debug.print("{s}\n", .{day.title}); + try day.run(allocator); + std.debug.print("\n", .{}); +} +