From 0ae8c77797d0cbe9d1fa0bd13cddec6f13bb55ae Mon Sep 17 00:00:00 2001 From: dobiadi Date: Sun, 7 Dec 2025 14:51:55 +0100 Subject: [PATCH] Day7 --- day7/zig/input.txt | 142 ++++++++++++++++++++++++++++++++++++++++++++ day7/zig/main.zig | 107 +++++++++++++++++++++++++++++++++ day7/zig/sample.txt | 16 +++++ 3 files changed, 265 insertions(+) create mode 100644 day7/zig/input.txt create mode 100644 day7/zig/main.zig create mode 100644 day7/zig/sample.txt diff --git a/day7/zig/input.txt b/day7/zig/input.txt new file mode 100644 index 0000000..132ed71 --- /dev/null +++ b/day7/zig/input.txt @@ -0,0 +1,142 @@ +......................................................................S...................................................................... +............................................................................................................................................. +......................................................................^...................................................................... +............................................................................................................................................. +.....................................................................^.^..................................................................... +............................................................................................................................................. +....................................................................^.^.^.................................................................... +............................................................................................................................................. +...................................................................^...^.^................................................................... +............................................................................................................................................. +..................................................................^.^.....^.................................................................. +............................................................................................................................................. +.................................................................^.^...^.^.^................................................................. +............................................................................................................................................. +................................................................^...^.^.^.^.^................................................................ +............................................................................................................................................. +...............................................................^.^...^.....^.^............................................................... +............................................................................................................................................. +..............................................................^.^.^.^.^...^.^.^.............................................................. +............................................................................................................................................. +.............................................................^...^.^...^.......^............................................................. +............................................................................................................................................. +............................................................^.^.^.^.^.^...^.^.^.^............................................................ +............................................................................................................................................. +...........................................................^.^.^.^.^.^...^.^...^.^........................................................... +............................................................................................................................................. +..........................................................^.......^...^.^.^.^.^.^.^.......................................................... +............................................................................................................................................. +.........................................................^...^...^.....^...^.......^......................................................... +............................................................................................................................................. +........................................................^...^.^.^.^.^...^.^.^.^.^...^........................................................ +............................................................................................................................................. +.......................................................^.....^.....^.^.....^.^.^.^...^....................................................... +............................................................................................................................................. +......................................................^.^.^.....^.^.^...^...^...^...^.^...................................................... +............................................................................................................................................. +.....................................................^.^.^.^.^...^.^.....^.^.^.^.^.^.^.^..................................................... +............................................................................................................................................. +....................................................^.^.^.^.....^.^.^.....^.^.^...^.^.^.^.................................................... +............................................................................................................................................. +...................................................^...^...^...^.^...^.^.^.^.^.^.^.^...^.^................................................... +............................................................................................................................................. +..................................................^.^...^.^.^.^...^.^.^...^...^.^...^.^...^.................................................. +............................................................................................................................................. +.................................................^.^.^.^.^.^.....^...^.^.^.^.^.^...^...^.^.^................................................. +............................................................................................................................................. +................................................^.^.^.....^.........^.^...^.^.....^.^.^.^.^.^................................................ +............................................................................................................................................. +...............................................^...^.^.^.^.^.^...^...^...^.^.^.^.^.....^.^...^............................................... +............................................................................................................................................. +..............................................^.^.^.^...^.^...^.....^.^...^.^...^...^.....^.^.^.............................................. +............................................................................................................................................. +.............................................^.^...^...^.^.^.^.^.^...^...^.^...^.....^...^.^.^.^............................................. +............................................................................................................................................. +............................................^.^...^.....^.^.^.^.^.^.^.^...^...^.^.^.^.^.^.^.^.^.^............................................ +............................................................................................................................................. +...........................................^...^.^.^.^.^.^.....^...........^.^...^...^.^.^.^.....^........................................... +............................................................................................................................................. +..........................................^.^.....^.^.....^.....^.....^...^.^...^...^.^.^.^.^...^.^.......................................... +............................................................................................................................................. +.........................................^.....^.^.^...^.^.^.^.^.^.^.....^...^.^.^...^.^.^.^.^.^.^.^......................................... +............................................................................................................................................. +........................................^...^.^.^...^.^.^.^.^.....^.^.^.^.^...^...^.......^.^.^.^...^........................................ +............................................................................................................................................. +.......................................^...^.^.^...^...^.^...^.^.^.^...^.....^.....^...^.^.^.^.^.^.^.^....................................... +............................................................................................................................................. +......................................^.^.^.^.^.^.^.^.^.^...^...^...^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^...................................... +............................................................................................................................................. +.....................................^.^.^...^.^.^.^.^.^.^.^...^.^...^.^...^.^.....^...^.....^.^...^.^.^..................................... +............................................................................................................................................. +....................................^.^.^.^.^.^.^.......^...^.^.^.^.^.^.^.^.^.^.....^.^.^...^.^.^.^.^.^.^.................................... +............................................................................................................................................. +...................................^.^.....^...^...^.^.^.^.^...^.^.^.....^.^...^...^.^.........^...^.^.^.^................................... +............................................................................................................................................. +..................................^.^.^.....^.^.^.........^.^.^.^...^.......^...^.^.^.^.^.......^.^.^...^.^.................................. +............................................................................................................................................. +.................................^.....^.^.^...^.^.^.^.^.^.^.^.^...^.^.^.^.....^.^...^.^.^.^.^.^.^.^.^.^...^................................. +............................................................................................................................................. +................................^.^.^.^.^.^.^.^.^.^...^.^.^.^.^...^.^.^.^...^.^.^...^.^.^.^.^.^.^.^...^.^.^.^................................ +............................................................................................................................................. +...............................^...^.^.....^.........^...^.....^.^.^...^.^.....^.....^.^.^.^.^...^.^.^.^.^.^.^............................... +............................................................................................................................................. +..............................^...^.....^.^.^.^...^.^.^.^.....^.^.^...^...^...^...^.....^.^.^.^.^.^.^.^.^.....^.............................. +............................................................................................................................................. +.............................^.^...^.^...^.^.^.^.^.^.^.^...^.....^.^...^.^.^.^.^...^.^.^.^.^.^...^.^.^.^.^...^.^............................. +............................................................................................................................................. +............................^...^.^.^...^.^.^.^.^.^.^.^...^.^...^.^.^...^.^...^.^.^.^.^.^.^.^.^.......^...^.^.^.^............................ +............................................................................................................................................. +...........................^.....^...^...^.^.^.^.^.^.^...^.^.........^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.....^.^.^.^........................... +............................................................................................................................................. +..........................^.^.^...^.^.^.^.^.....^...^.^.^...^...^.^.^.^...^.^.^...^.^.^.^.....^.^.....^...^.^.^.^.^.......................... +............................................................................................................................................. +.........................^.^.........^.^.....^.^.....^.....^...^.^...^.^...^.^.....^.^.^...^.^.^...^.^...^.^.^...^.^......................... +............................................................................................................................................. +........................^.^.^...^.^.^.^.....^.^.^.....^...^.^.^...^.^.^.....^.^.^...^.^.^.^.....^.^.^...^.^.^.^.^...^........................ +............................................................................................................................................. +.......................^...^.^...^.^.^.^.......^.^.^.....^.^.^.^.^.....^.^.^.^.....^.^.^.^.^...^...^.^.^...^...^.^.^.^....................... +............................................................................................................................................. +......................^.^...^.^...^.^.^.^...^...^...^.^.^.^...^.^.^...^...^...^.^.^.^.......^.^...^...^.^...^.^...^.^.^...................... +............................................................................................................................................. +.....................^.^.^.^.^.^...^.^.^.^.^.^.^.....^.^...^.^.^.^...^.^.^.^...^.^.^...^.^...^.........^.....^.^...^.^.^..................... +............................................................................................................................................. +....................^.^.^.^...^...^.^...^...^...^.^...^.^...^.^.^.^.^.^.^.^...^.^.^.^.^.....^...^...^...^...^.^.^.......^.................... +............................................................................................................................................. +...................^...^.^.^.^.^.^.....^.^...^...^.^.^.........^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.^.^.^.......^.^.^.......^................... +............................................................................................................................................. +..................^.......^...^...^.^.^.^...^.........^...^.^.^.....^.......^...^...^.....^.^.^.^.^.^.^.^...^.^...^.^.^.^.^.................. +............................................................................................................................................. +.................^.^.^.^.^.^.^.^.^.....^.^...^.^.^.^...^.^.^...^.^.^...^...^.^...^.^.^.^.^.^.....^.^.^.^.^...^.....^.^...^.^................. +............................................................................................................................................. +................^.^.^.^.^.^.^...^...^.^.^.^...^.....^.^.^...^.^.^.....^.^.^.....^.^...^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^...^................ +............................................................................................................................................. +...............^.^.....^.^.^.^.^.......^.^.^.^.^.^.^...^.^.^.......^.^...^.^...^.^.^.^...^...^.^.^.^...^.^.^...^.^.^.^.....^.^............... +............................................................................................................................................. +..............^...^...^.^.^.^.^.....^.^...^.^.^.^.^.^.^.^...^.....^...^.^.^.....^.^.^.^.....^.^...^.^.^.^.^.^.^.....^.^...^.^.^.............. +............................................................................................................................................. +.............^.^.....^.^.^.^.^...^.....^.^.....^.^.^.^...^.^.........^.....^.....^.^...^...^.^.^...^.^.....^.^.^...^.^.^.^.^.^.^............. +............................................................................................................................................. +............^.^...^...^.^.........^.^.^...^.^.^.^.^.^.....^.^...^.^.........^.^...^.....^.^.....^...^.^.^.^.^.^.^.....^.^...^.^.^............ +............................................................................................................................................. +...........^...^...^...^.^.^...^...^...^.^.^.^...^.....^...^.^.^.....^.....^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.......^.^........... +............................................................................................................................................. +..........^...^.^...^...^.^.....^...^.^...^.^.^.....^.^.^.^...^.^...^.^.^.^...^...^...^...^.^.^.^.^.^.^...^.^.^.^.....^...^.^.^.^.^.......... +............................................................................................................................................. +.........^.^...^.^.^.^...^...^...........^.^...^...^.^...^.^.^.^...^.^.^.^.....^.^.....^.^.^.^...^.^.^.....^...^.^.^.^.^.^.^.^.^...^......... +............................................................................................................................................. +........^...^.^...^.^...^...^.^.^.^.^.^...^.^.....^.^.^.....^.^...^.^.^.....^.....^.^.^.^.^...^.....^...^...^.^.^...^...^...^...^...^........ +............................................................................................................................................. +.......^.^.....^...^.^...^.^.^.^.^.^...^.^.^.^.^.^.^.^.......^.^.^.^.^.^.........^...^.^.^.^.........^.^.^.^.^.....^.^.^.^.^.....^.^.^....... +............................................................................................................................................. +......^...^.^.^...^.^.^.^...^.^...^...^.^.^.....^.^.^...^.....^.^.^...^.^.^.....^.^.^.^.^.^.^.^.....^.^.......^.^.^.^.^.^.^.^...^.^...^...... +............................................................................................................................................. +.....^.^.......^.^.^.^.^.^...^.^.^...........^.^...^...^.^...^.......^.^.....^...^...^.^.^.....^.^...^...^.^.....^.^.^.^.^.^.^...^.....^..... +............................................................................................................................................. +....^.^.^.^.^.^...^.^...^...........^.....^...^...^.^.^.^.^.^...^.....^.^...^.^.^...^.^...^...^.^.^...^.^...^.^.^...^.^...^...^.^.^.^...^.... +............................................................................................................................................. +...^.^...^.^.^.^.^.^.^...^.^.^.^...^.^...^.....^.^.^.^...^.^.....^.^.^.^.^...^.^...^.....^...^...^.....^.^...^.^.........^.^.^...^.^.^.^.^... +............................................................................................................................................. +..^.^.^.....^.^.^.^.^...^.^.^.....^.^.^.^.^.^.^...^.....^.^.....^.^.....^.^...^.......^.^...^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.. +............................................................................................................................................. +.^.^.^.........^.^.^.....^.^.^.^.^...^.^...^...^.^.^.^.....^...^.^...^.^.^...^.^.....^.....^...^...^...^.^.....^...^.^...^.^.....^.^.^.^.^.^. +............................................................................................................................................. diff --git a/day7/zig/main.zig b/day7/zig/main.zig new file mode 100644 index 0000000..58b498c --- /dev/null +++ b/day7/zig/main.zig @@ -0,0 +1,107 @@ +const std = @import("std"); + +const Tile = enum { + start, + empty, + splitter, +}; + +pub fn main() !void { + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + defer _ = gpa.deinit(); + + var stdin_buffer: [4096]u8 = undefined; + var stdin_reader = std.fs.File.stdin().reader(&stdin_buffer); + + const stdin = &stdin_reader.interface; + + const allocator = gpa.allocator(); + var map = try std.ArrayList(std.ArrayList(Tile)).initCapacity(allocator, 1); + defer map.deinit(allocator); + + while (try stdin.takeDelimiter('\n')) |line| { + var row = try std.ArrayList(Tile).initCapacity(allocator, 1); + + for (line) |char| { + switch (char) { + 'S' => { + try row.append(allocator, Tile.start); + }, + '.' => { + try row.append(allocator, Tile.empty); + }, + '^' => { + try row.append(allocator, Tile.splitter); + }, + else => unreachable, + } + } + + try map.append(allocator, row); + } + + var start_x: usize = 0; + for (map.items[0].items, 0..) |tile, i| { + if (tile == Tile.start) { + start_x = i; + break; + } + } + + var beammap = try std.ArrayList(std.ArrayList(u64)).initCapacity(allocator, 1); + defer beammap.deinit(allocator); + + for (0..map.items.len) |_| { + var row = try std.ArrayList(u64).initCapacity(allocator, 1); + + for (0..map.items[0].items.len) |_| { + try row.append(allocator, 0); + } + + try beammap.append(allocator, row); + } + + beammap.items[0].items[start_x] = 1; + + var task1: u32 = 0; + + for (beammap.items, 0..) |beamrow, i| { + for (beamrow.items, 0..) |has_beam, j| { + if (has_beam > 0 and map.items[i].items[j] == Tile.splitter) { + if (j != 0) { + beammap.items[i].items[j - 1] += beammap.items[i].items[j]; + } + if (j < beamrow.items.len - 1) { + beammap.items[i].items[j + 1] += beammap.items[i].items[j]; + } + beammap.items[i].items[j] = 0; + task1 += 1; + } + } + + // Copy beams to next row + if (i == beammap.items.len - 1) { + continue; + } + + for (0..beamrow.items.len) |j| { + beammap.items[i + 1].items[j] = beammap.items[i].items[j]; + } + } + + var task2: u64 = 0; + for (beammap.items[beammap.items.len - 1].items) |n| { + task2 += n; + } + + std.debug.print("{d}\n", .{task1}); + std.debug.print("{d}\n", .{task2}); + + for (map.items) |*row| { + row.deinit(allocator); + } + + for (beammap.items) |*row| { + row.deinit(allocator); + } +} diff --git a/day7/zig/sample.txt b/day7/zig/sample.txt new file mode 100644 index 0000000..57a2466 --- /dev/null +++ b/day7/zig/sample.txt @@ -0,0 +1,16 @@ +.......S....... +............... +.......^....... +............... +......^.^...... +............... +.....^.^.^..... +............... +....^.^...^.... +............... +...^.^...^.^... +............... +..^...^.....^.. +............... +.^.^.^.^.^...^. +...............