- commit
- 532c0fb2665fd66f907de67e296885cdf91715b3
- parent
- 679c10d0a4d37c1c1229ab1b463074cd558de8fc
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2025-12-08 08:07
2025-12-07
Diffstat
| A | 2025/07/solution.zig | 52 | ++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | 2025/07/test.txt | 16 | ++++++++++++++++ |
2 files changed, 68 insertions, 0 deletions
diff --git a/2025/07/solution.zig b/2025/07/solution.zig
@@ -0,0 +1,52 @@
-1 1 const std = @import("std");
-1 2
-1 3 const len = 150;
-1 4
-1 5 pub fn main() !void {
-1 6 const path: [:0]const u8 = std.mem.span(std.os.argv[1]);
-1 7 var file = try std.fs.cwd().openFile(path, .{});
-1 8 defer file.close();
-1 9
-1 10 var buffer: [1024]u8 = undefined;
-1 11 var reader = file.reader(&buffer);
-1 12
-1 13 var part1: u64 = 0;
-1 14 var part2: u64 = 0;
-1 15 var row = [_]usize{0} ** len;
-1 16
-1 17 while (reader.interface.peekDelimiterExclusive('\n')) |line| {
-1 18 reader.interface.toss(line.len + 1);
-1 19 std.debug.assert(line.len < len);
-1 20 var next = [_]usize{0} ** len;
-1 21 for (line, 0..) |c, i| {
-1 22 if (c == 'S') {
-1 23 @branchHint(.unlikely);
-1 24 next[i] = 1;
-1 25 } else if (c == '^') {
-1 26 if (row[i] != 0) {
-1 27 part1 += 1;
-1 28 }
-1 29 if (i > 0) {
-1 30 next[i - 1] += row[i];
-1 31 }
-1 32 if (i + 1 < line.len) {
-1 33 next[i + 1] += row[i];
-1 34 }
-1 35 } else {
-1 36 @branchHint(.likely);
-1 37 next[i] += row[i];
-1 38 }
-1 39 }
-1 40 row = next;
-1 41 } else |err| switch (err) {
-1 42 error.EndOfStream => {},
-1 43 else => |e| return e,
-1 44 }
-1 45
-1 46 for (row) |n| {
-1 47 part2 += n;
-1 48 }
-1 49
-1 50 std.debug.print("part1: {}\n", .{part1});
-1 51 std.debug.print("part2: {}\n", .{part2});
-1 52 }
diff --git a/2025/07/test.txt b/2025/07/test.txt
@@ -0,0 +1,16 @@ -1 1 .......S....... -1 2 ............... -1 3 .......^....... -1 4 ............... -1 5 ......^.^...... -1 6 ............... -1 7 .....^.^.^..... -1 8 ............... -1 9 ....^.^...^.... -1 10 ............... -1 11 ...^.^...^.^... -1 12 ............... -1 13 ..^...^.....^.. -1 14 ............... -1 15 .^.^.^.^.^...^. -1 16 ...............