blob: 327263c5ae5dbabbcabd387c40c9be0336d9aeec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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});
}
|