const std = @import("std"); const Reader = std.io.AnyReader; pub fn main() !u8 { return f(); } fn f() !u8 { const file = try std.fs.cwd().openFile("string", .{}); defer file.close(); var br = std.io.bufferedReader(file.reader()); const r = br.reader().any(); var n: u8 = 0; for (0..1_000_000) |i| { _ = i; while (r.readByte() catch null) |c| { n +%= try f1(r, c); } br.start = 0; br.end = 0; try file.seekTo(0); } return n; } fn f1(r: Reader, c1: u8) !u8 { if (c1 != '\\') return c1; const c = try r.readByte(); if (c == 'u') return unknown1(); return switch (c) { '\\', '"' => c, '0' => 0, 'a' => 7, 'b' => 8, 't' => 9, 'n' => 10, 'v' => 11, 'f' => 12, 'r' => 13, 'e' => 27, 'x' => unknown2(), else => unknown3(), }; } fn f2(r: Reader, c1: u8) !u8 { if (c1 != '\\') return c1; const c = try r.readByte(); if (c == 'u') return unknown1(); if (c == 'x') return unknown2(); if (c == '\\' or c == '"') return c; const itable = .{ '0', 'a', 'b', 't', 'n', 'v', 'f', 'r', 'e' }; const ctable: []const u8 = &.{ 0, 7, 8, 9, 10, 11, 12, 13, 27 }; const i = std.mem.indexOfScalar(u8, &itable, c) orelse return unknown3(); return ctable[i]; } fn f3(r: Reader, c1: u8) !u8 { if (c1 != '\\') return c1; const c = try r.readByte(); if (c == 'u') return unknown1(); if (c == 'x') return unknown2(); if (c == '\\' or c == '"') return c; if (c == '0') return 0; const table = comptime t: { var table: [26]u8 = .{0} ** 26; table['a' - 'a'] = 7; table['b' - 'a'] = 8; table['t' - 'a'] = 9; table['n' - 'a'] = 10; table['v' - 'a'] = 11; table['f' - 'a'] = 12; table['r' - 'a'] = 13; table['e' - 'a'] = 27; break :t table; }; if (c < 'a') return unknown3(); const result = table[c - 'a']; return if (result != 0) result else unknown3(); } fn unknown1() u8 { return 0; } fn unknown2() u8 { return 0; } fn unknown3() u8 { return 0; }