const Stack = @import("Stack.zig"); const page_allocator = std.heap.page_allocator; const print = std.debug.print; const std = @import("std"); const tokenize = std.mem.tokenize; pub fn main() !void { var input = tokenize(@embedFile("input"), "\n"); var max_len: usize = 0; while (input.next()) |line| { if (line.len > max_len) max_len = line.len; } var stack = try Stack.alloc(page_allocator, max_len); defer stack.free(); var sum: usize = 0; defer print("{}\n", .{ sum }); input.reset(); while (input.next()) |line| : (stack.reset()) for (line) |c| switch (c) { '(', '[', '{', '<' => stack.push(c), else => if (stack.pop().? ^ c > 6) { sum += @as(usize, switch (c) { ')' => 3, ']' => 57, '}' => 1197, '>' => 25137, else => unreachable, }); break; }, }; }