Compare commits

..

2 commits

Author SHA1 Message Date
Imbus
56ab2ca98f Better docstrings 2023-12-05 16:51:55 +01:00
Imbus
f84cccc1b5 Better comments 2023-12-05 16:13:57 +01:00

View file

@ -7,10 +7,16 @@ public class Solver implements SudokuSolver {
board = new int[9][9]; board = new int[9][9];
} }
/**
* {@inheritDoc}
*/
public void setBoard(int[][] board) { public void setBoard(int[][] board) {
this.board = board; this.board = board;
} }
/**
* {@inheritDoc}
*/
public int[][] getBoard() { public int[][] getBoard() {
return board; return board;
} }
@ -22,6 +28,9 @@ public class Solver implements SudokuSolver {
board = new int[9][9]; board = new int[9][9];
} }
/**
* {@inheritDoc}
*/
public boolean solve() { public boolean solve() {
return solve(0, 0); return solve(0, 0);
} }
@ -38,6 +47,7 @@ public class Solver implements SudokuSolver {
return false; return false;
} }
// If row is 9, drop down to the next column, if column is 9, we are done
if (row == 9) { if (row == 9) {
row = 0; row = 0;
if (++col == 9) { if (++col == 9) {
@ -45,13 +55,17 @@ public class Solver implements SudokuSolver {
} }
} }
// If we have a "number" in the current cell
// recursively call solve() on the next cell
if (board[row][col] != 0) { if (board[row][col] != 0) {
return solve(row + 1, col); return solve(row + 1, col);
} }
// Check for legal values in the current cell
for (int val = 1; val <= 9; ++val) { for (int val = 1; val <= 9; ++val) {
if (legal(row, col, val)) { if (legal(row, col, val)) {
board[row][col] = val; board[row][col] = val;
// When we find a legal value, recursively call solve() on the next cell
if (solve(row + 1, col)) { if (solve(row + 1, col)) {
return true; return true;
} }
@ -91,12 +105,7 @@ public class Solver implements SudokuSolver {
} }
/** /**
* Checks if val is legal in the given row, column, and 3x3 box * {@inheritDoc}
*
* @param row row to check
* @param col column to check
* @param val value to check
* @return true if val is legal
*/ */
public boolean legal(int row, int col, int val) { public boolean legal(int row, int col, int val) {
if (row < 0 || row >= 9 || col < 0 || col >= 9 || val < 1 || val > 9) { if (row < 0 || row >= 9 || col < 0 || col >= 9 || val < 1 || val > 9) {
@ -133,6 +142,11 @@ public class Solver implements SudokuSolver {
return true; return true;
} }
/**
* Checks if the board is solved
*
* @return true if solved
*/
public boolean isSolved() { public boolean isSolved() {
return isSolved(0, 0); return isSolved(0, 0);
} }
@ -142,7 +156,7 @@ public class Solver implements SudokuSolver {
* *
* @param row * @param row
* @param col * @param col
* @return * @return true if solved
*/ */
private boolean isSolved(int row, int col) { private boolean isSolved(int row, int col) {
// If we are at the 9th row and 0th column (the last cell), we are done // If we are at the 9th row and 0th column (the last cell), we are done