diff options
author | Robby Zambito <contact@robbyzambito.me> | 2025-05-18 20:05:41 -0400 |
---|---|---|
committer | Robby Zambito <contact@robbyzambito.me> | 2025-05-19 08:16:10 -0400 |
commit | 2a6552fe76df17e76ee77d6d552e33e1fa41fa11 (patch) | |
tree | 38bf3674bd41d33d4e3570b14549b65a85e8ed29 | |
parent | b61b7b8a122f3efc9a573777300648ab0eb2a50b (diff) |
stylistic changes
-rw-r--r-- | src/main.zig | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/main.zig b/src/main.zig index e6975be..496d14f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -25,13 +25,12 @@ const SudokuSolver = struct { fn possibleMovesForCell(self: SudokuSolver, row: usize, col: usize) std.StaticBitSet(9) { var cell_guesses: std.StaticBitSet(9) = .initEmpty(); - const constraints = join(self.rows[row], join(self.cols[col], self.boxes[boxOf(row, col)])); - inline for (1..10) |n| { + const related = join(self.rows[row], join(self.cols[col], self.boxes[boxOf(row, col)])); + inline for (0..9) |n| { // A number is a possible move iff it does not already exist in the current row, col, or box. - const n_vec: @Vector(@typeInfo(@TypeOf(constraints)).vector.len, u8) = @splat(n); - const equals = constraints == n_vec; - if (!@reduce(.Or, equals)) { - cell_guesses.set(n - 1); + const n_vec: @TypeOf(related) = @splat(n + 1); + if (!@reduce(.Or, related == n_vec)) { + cell_guesses.set(n); } } @@ -95,12 +94,11 @@ const SudokuSolver = struct { } fn isSolved(self: SudokuSolver) bool { - for (self.rows) |row| { - const z_vec: @Vector(@typeInfo(@TypeOf(row)).vector.len, u8) = @splat(0); - const equals = row == z_vec; - if (@reduce(.Or, equals)) return false; - } - return true; + // Not solved if any row contains a zero. + const z_vec: @Vector(9, u8) = @splat(0); + return for (self.rows) |row| { + if (@reduce(.Or, row == z_vec)) break false; + } else true; } fn setCell(self: *SudokuSolver, row: usize, col: usize, value: u8) void { |