Day7
This commit is contained in:
142
day7/zig/input.txt
Normal file
142
day7/zig/input.txt
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
......................................................................S......................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................................................................^......................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................................................................^.^.....................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................................................................^.^.^....................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................................................................^...^.^...................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................................................................^.^.....^..................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................................................................^.^...^.^.^.................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................................................................^...^.^.^.^.^................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............................................................^.^...^.....^.^...............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............................................................^.^.^.^.^...^.^.^..............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............................................................^...^.^...^.......^.............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
............................................................^.^.^.^.^.^...^.^.^.^............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........................................................^.^.^.^.^.^...^.^...^.^...........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........................................................^.......^...^.^.^.^.^.^.^..........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........................................................^...^...^.....^...^.......^.........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
........................................................^...^.^.^.^.^...^.^.^.^.^...^........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......................................................^.....^.....^.^.....^.^.^.^...^.......................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................................................^.^.^.....^.^.^...^...^...^...^.^......................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................................................^.^.^.^.^...^.^.....^.^.^.^.^.^.^.^.....................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................................................^.^.^.^.....^.^.^.....^.^.^...^.^.^.^....................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................................................^...^...^...^.^...^.^.^.^.^.^.^.^...^.^...................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................................................^.^...^.^.^.^...^.^.^...^...^.^...^.^...^..................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................................................^.^.^.^.^.^.....^...^.^.^.^.^.^...^...^.^.^.................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................................................^.^.^.....^.........^.^...^.^.....^.^.^.^.^.^................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............................................^...^.^.^.^.^.^...^...^...^.^.^.^.^.....^.^...^...............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............................................^.^.^.^...^.^...^.....^.^...^.^...^...^.....^.^.^..............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............................................^.^...^...^.^.^.^.^.^...^...^.^...^.....^...^.^.^.^.............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
............................................^.^...^.....^.^.^.^.^.^.^.^...^...^.^.^.^.^.^.^.^.^.^............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........................................^...^.^.^.^.^.^.....^...........^.^...^...^.^.^.^.....^...........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........................................^.^.....^.^.....^.....^.....^...^.^...^...^.^.^.^.^...^.^..........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........................................^.....^.^.^...^.^.^.^.^.^.^.....^...^.^.^...^.^.^.^.^.^.^.^.........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
........................................^...^.^.^...^.^.^.^.^.....^.^.^.^.^...^...^.......^.^.^.^...^........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......................................^...^.^.^...^...^.^...^.^.^.^...^.....^.....^...^.^.^.^.^.^.^.^.......................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................................^.^.^.^.^.^.^.^.^.^...^...^...^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^......................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................................^.^.^...^.^.^.^.^.^.^.^...^.^...^.^...^.^.....^...^.....^.^...^.^.^.....................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................................^.^.^.^.^.^.^.......^...^.^.^.^.^.^.^.^.^.^.....^.^.^...^.^.^.^.^.^.^....................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................................^.^.....^...^...^.^.^.^.^...^.^.^.....^.^...^...^.^.........^...^.^.^.^...................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................................^.^.^.....^.^.^.........^.^.^.^...^.......^...^.^.^.^.^.......^.^.^...^.^..................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................................^.....^.^.^...^.^.^.^.^.^.^.^.^...^.^.^.^.....^.^...^.^.^.^.^.^.^.^.^.^...^.................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................................^.^.^.^.^.^.^.^.^.^...^.^.^.^.^...^.^.^.^...^.^.^...^.^.^.^.^.^.^.^...^.^.^.^................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............................^...^.^.....^.........^...^.....^.^.^...^.^.....^.....^.^.^.^.^...^.^.^.^.^.^.^...............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............................^...^.....^.^.^.^...^.^.^.^.....^.^.^...^...^...^...^.....^.^.^.^.^.^.^.^.^.....^..............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............................^.^...^.^...^.^.^.^.^.^.^.^...^.....^.^...^.^.^.^.^...^.^.^.^.^.^...^.^.^.^.^...^.^.............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
............................^...^.^.^...^.^.^.^.^.^.^.^...^.^...^.^.^...^.^...^.^.^.^.^.^.^.^.^.......^...^.^.^.^............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........................^.....^...^...^.^.^.^.^.^.^...^.^.........^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.....^.^.^.^...........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........................^.^.^...^.^.^.^.^.....^...^.^.^...^...^.^.^.^...^.^.^...^.^.^.^.....^.^.....^...^.^.^.^.^..........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........................^.^.........^.^.....^.^.....^.....^...^.^...^.^...^.^.....^.^.^...^.^.^...^.^...^.^.^...^.^.........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
........................^.^.^...^.^.^.^.....^.^.^.....^...^.^.^...^.^.^.....^.^.^...^.^.^.^.....^.^.^...^.^.^.^.^...^........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......................^...^.^...^.^.^.^.......^.^.^.....^.^.^.^.^.....^.^.^.^.....^.^.^.^.^...^...^.^.^...^...^.^.^.^.......................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................^.^...^.^...^.^.^.^...^...^...^.^.^.^...^.^.^...^...^...^.^.^.^.......^.^...^...^.^...^.^...^.^.^......................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................^.^.^.^.^.^...^.^.^.^.^.^.^.....^.^...^.^.^.^...^.^.^.^...^.^.^...^.^...^.........^.....^.^...^.^.^.....................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................^.^.^.^...^...^.^...^...^...^.^...^.^...^.^.^.^.^.^.^.^...^.^.^.^.^.....^...^...^...^...^.^.^.......^....................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................^...^.^.^.^.^.^.....^.^...^...^.^.^.........^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.^.^.^.......^.^.^.......^...................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................^.......^...^...^.^.^.^...^.........^...^.^.^.....^.......^...^...^.....^.^.^.^.^.^.^.^...^.^...^.^.^.^.^..................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................^.^.^.^.^.^.^.^.^.....^.^...^.^.^.^...^.^.^...^.^.^...^...^.^...^.^.^.^.^.^.....^.^.^.^.^...^.....^.^...^.^.................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................^.^.^.^.^.^.^...^...^.^.^.^...^.....^.^.^...^.^.^.....^.^.^.....^.^...^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^...^................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............^.^.....^.^.^.^.^.......^.^.^.^.^.^.^...^.^.^.......^.^...^.^...^.^.^.^...^...^.^.^.^...^.^.^...^.^.^.^.....^.^...............
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............^...^...^.^.^.^.^.....^.^...^.^.^.^.^.^.^.^...^.....^...^.^.^.....^.^.^.^.....^.^...^.^.^.^.^.^.^.....^.^...^.^.^..............
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............^.^.....^.^.^.^.^...^.....^.^.....^.^.^.^...^.^.........^.....^.....^.^...^...^.^.^...^.^.....^.^.^...^.^.^.^.^.^.^.............
|
||||||
|
.............................................................................................................................................
|
||||||
|
............^.^...^...^.^.........^.^.^...^.^.^.^.^.^.....^.^...^.^.........^.^...^.....^.^.....^...^.^.^.^.^.^.^.....^.^...^.^.^............
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........^...^...^...^.^.^...^...^...^.^.^.^...^.....^...^.^.^.....^.....^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.......^.^...........
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........^...^.^...^...^.^.....^...^.^...^.^.^.....^.^.^.^...^.^...^.^.^.^...^...^...^...^.^.^.^.^.^.^...^.^.^.^.....^...^.^.^.^.^..........
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........^.^...^.^.^.^...^...^...........^.^...^...^.^...^.^.^.^...^.^.^.^.....^.^.....^.^.^.^...^.^.^.....^...^.^.^.^.^.^.^.^.^...^.........
|
||||||
|
.............................................................................................................................................
|
||||||
|
........^...^.^...^.^...^...^.^.^.^.^.^...^.^.....^.^.^.....^.^...^.^.^.....^.....^.^.^.^.^...^.....^...^...^.^.^...^...^...^...^...^........
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......^.^.....^...^.^...^.^.^.^.^.^...^.^.^.^.^.^.^.^.......^.^.^.^.^.^.........^...^.^.^.^.........^.^.^.^.^.....^.^.^.^.^.....^.^.^.......
|
||||||
|
.............................................................................................................................................
|
||||||
|
......^...^.^.^...^.^.^.^...^.^...^...^.^.^.....^.^.^...^.....^.^.^...^.^.^.....^.^.^.^.^.^.^.^.....^.^.......^.^.^.^.^.^.^.^...^.^...^......
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....^.^.......^.^.^.^.^.^...^.^.^...........^.^...^...^.^...^.......^.^.....^...^...^.^.^.....^.^...^...^.^.....^.^.^.^.^.^.^...^.....^.....
|
||||||
|
.............................................................................................................................................
|
||||||
|
....^.^.^.^.^.^...^.^...^...........^.....^...^...^.^.^.^.^.^...^.....^.^...^.^.^...^.^...^...^.^.^...^.^...^.^.^...^.^...^...^.^.^.^...^....
|
||||||
|
.............................................................................................................................................
|
||||||
|
...^.^...^.^.^.^.^.^.^...^.^.^.^...^.^...^.....^.^.^.^...^.^.....^.^.^.^.^...^.^...^.....^...^...^.....^.^...^.^.........^.^.^...^.^.^.^.^...
|
||||||
|
.............................................................................................................................................
|
||||||
|
..^.^.^.....^.^.^.^.^...^.^.^.....^.^.^.^.^.^.^...^.....^.^.....^.^.....^.^...^.......^.^...^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^..
|
||||||
|
.............................................................................................................................................
|
||||||
|
.^.^.^.........^.^.^.....^.^.^.^.^...^.^...^...^.^.^.^.....^...^.^...^.^.^...^.^.....^.....^...^...^...^.^.....^...^.^...^.^.....^.^.^.^.^.^.
|
||||||
|
.............................................................................................................................................
|
||||||
107
day7/zig/main.zig
Normal file
107
day7/zig/main.zig
Normal file
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
16
day7/zig/sample.txt
Normal file
16
day7/zig/sample.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
.......S.......
|
||||||
|
...............
|
||||||
|
.......^.......
|
||||||
|
...............
|
||||||
|
......^.^......
|
||||||
|
...............
|
||||||
|
.....^.^.^.....
|
||||||
|
...............
|
||||||
|
....^.^...^....
|
||||||
|
...............
|
||||||
|
...^.^...^.^...
|
||||||
|
...............
|
||||||
|
..^...^.....^..
|
||||||
|
...............
|
||||||
|
.^.^.^.^.^...^.
|
||||||
|
...............
|
||||||
Reference in New Issue
Block a user