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