adventofcode

git clone https://git.ce9e.org/adventofcode.git

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 ...............