summaryrefslogtreecommitdiff
path: root/src/day-7/part-1.zig
diff options
context:
space:
mode:
authorame <[email protected]>2025-12-07 01:09:57 -0600
committerame <[email protected]>2025-12-07 01:09:57 -0600
commit17c6acf5a7c5e84a7888f304ba799e35fdc6bcce (patch)
tree07883a78b22a8a94472365cf4d32357dfe885a2a /src/day-7/part-1.zig
parenteb378f5ccdcf9a455d1a424e702bdd3cebf449f8 (diff)
day 7
Diffstat (limited to 'src/day-7/part-1.zig')
-rw-r--r--src/day-7/part-1.zig40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/day-7/part-1.zig b/src/day-7/part-1.zig
new file mode 100644
index 0000000..327263c
--- /dev/null
+++ b/src/day-7/part-1.zig
@@ -0,0 +1,40 @@
+const std = @import("std");
+
+pub fn main() !void {
+ var gpa = std.heap.GeneralPurposeAllocator(.{}){};
+ defer _ = gpa.deinit();
+ const alloc = gpa.allocator();
+
+ const path = "input.txt";
+ const fp = try std.fs.cwd().openFile(path, .{.mode = std.fs.File.OpenMode.read_only});
+ defer fp.close();
+ var reader = fp.reader();
+
+ var buffer: [256]u8 = undefined;
+
+ var beams = std.ArrayList(usize).init(alloc);
+ defer beams.deinit();
+
+ var splits: u64 = 0;
+
+ while(try reader.readUntilDelimiterOrEof(&buffer, '\n')) |line| {
+ if(beams.items.len == 0){
+ try beams.append(std.mem.indexOf(u8, line, "S").?);
+ continue;
+ }
+
+ const ol: usize = beams.items.len;
+ for(0..ol) |i| {
+ if(line[beams.items[i]] == '^'){
+ line[beams.items[i]] = 'i';
+ splits += 1;
+ try beams.append(beams.items[i] + 1);
+ beams.items[i] -= 1;
+ } else if(line[beams.items[i]] == 'i'){
+ beams.items[i] -= 1;
+ }
+ }
+ }
+
+ std.debug.print("{d}\n", .{splits});
+}