diff --git a/07/src/main.zig b/07/src/main.zig index ea6314f..5d18297 100644 --- a/07/src/main.zig +++ b/07/src/main.zig @@ -80,9 +80,6 @@ fn run2(s: []const u8) !u64 { }; } - var str_buf: [64]u8 = undefined; - var str_buf_fbs = std.io.fixedBufferStream(&str_buf); - var str_buf_writer = str_buf_fbs.writer(); for (entries.items) |entry| { const nums: []u64 = entry.nums.items; std.debug.print("{}:", .{entry.n}); @@ -101,12 +98,11 @@ fn run2(s: []const u8) !u64 { OP.ADD => v += n, OP.MUL => v *= n, OP.CAT => { - try str_buf_fbs.seekTo(0); - try std.fmt.formatInt(v, 10, std.fmt.Case.lower, .{}, &str_buf_writer); - try std.fmt.formatInt(n, 10, std.fmt.Case.lower, .{}, &str_buf_writer); - v = try std.fmt.parseInt(u64, str_buf[0..str_buf_fbs.pos], 10); + const l = std.math.log10(n)+1; + v = (v * std.math.pow(u64, 10, l)) + n; }, } + if (v > entry.n) break; op_i += 1; }