diff options
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/main.zig b/src/main.zig index 496d14f..341bc62 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2,7 +2,7 @@ const SudokuSolver = struct { const join = std.simd.join; // Each cell exists in memory three times. // This makes it easy to compare a guess against all relevant cells simultaneously. - rows: [9]@Vector(9, u8), + rows: [9]@Vector(9, u8), cols: [9]@Vector(9, u8), boxes: [9]@Vector(9, u8), @@ -116,7 +116,7 @@ const SudokuSolver = struct { return (row % 3) * 3 + col % 3; } - fn display(self: SudokuSolver, writer: std.io.AnyWriter) !void { + fn display(self: SudokuSolver, writer: *std.Io.Writer) !void { for (self.rows, 0..) |row, i| { // Can't loop over row directly? for (@as([9]u8, row), 0..) |cell, j| { @@ -130,18 +130,24 @@ const SudokuSolver = struct { try writer.print("{s}\n", .{"-" ** 21}); } } + try writer.flush(); } }; pub fn main() !void { var board: [9][9]u8 = undefined; - const stdout = std.io.getStdOut().writer().any(); - const stdin = std.io.getStdIn().reader().any(); + var stdout_buffer: [1024]u8 = undefined; + var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); + const stdout = &stdout_writer.interface; + + var stdin_buffer: [1024]u8 = undefined; + var stdin_reader = std.fs.File.stdin().reader(&stdin_buffer); + const stdin = &stdin_reader.interface; for (0..9) |row| { for (0..9) |col| { - const byte = try stdin.readByte(); + const byte = try stdin.takeByte(); board[row][col] = try std.fmt.charToDigit(byte, 10); } } @@ -228,7 +234,9 @@ test "Solve easy board" { var solver: SudokuSolver = SudokuSolver.init(board) catch unreachable; - const stderr = std.io.getStdErr().writer().any(); + var stderr_buffer: [1024]u8 = undefined; + var stderr_writer = std.fs.File.stderr().writer(&stderr_buffer); + const stderr = &stderr_writer.interface; std.debug.print("input:\n", .{}); try solver.display(stderr); std.debug.print("output:\n", .{}); |