Compare commits

..

No commits in common. "175545d3d593b9d0095a4393632c3a22a176ec8d" and "71c43b35c3e5c8474a100bedc566d4b305d9b391" have entirely different histories.

3 changed files with 12 additions and 26 deletions

View file

@ -12,11 +12,7 @@ public class Solver implements SudokuSolver {
/** {@inheritDoc} */
@Override
public void setBoard(int[][] board) throws IllegalArgumentException, NullPointerException {
if (board == null)
throw new NullPointerException("Board cannot be null");
if (board.length != 9 || board[0].length != 9)
throw new IllegalArgumentException("Board must be 9x9");
public void setBoard(int[][] board) {
this.board = board;
}
@ -32,7 +28,7 @@ public class Solver implements SudokuSolver {
board = new int[9][9];
}
/* {@inheritDoc} */
/*{@inheritDoc} */
@Override
public boolean solve() {
return solve(0, 0);
@ -111,7 +107,7 @@ public class Solver implements SudokuSolver {
}
// Recursively call randomizeBoard() until we get a solvable board
// This is expensive, and there should be a better way to do this
// This is expensive, and there should be some voodoo magic that computes this in n^2 time
if (!isSolvable()) {
randomizeBoard(difficulty);
}

View file

@ -1,6 +1,5 @@
package sudoku;
/** SudokuSolver is an interface for implementing Sudoku solvers */
public interface SudokuSolver {
/**
* Set sudoku board, numbers 1-9 are fixed values, 0 is unsolved.
@ -8,12 +7,10 @@ public interface SudokuSolver {
* @param board a board to copy values from
* @throws IllegalArgumentException if board is invalid, e.g. not 9x9
*/
void setBoard(int[][] board) throws IllegalArgumentException, NullPointerException;
void setBoard(int[][] board) throws IllegalArgumentException;
/**
* Get a copy of the sudoku board
*
* @return a <b>copy</b> of the sudoku board
*/
int[][] getBoard();
@ -27,9 +24,9 @@ public interface SudokuSolver {
/**
* Check if digit is legal on the current board
*
* @param row row
* @param col column
* @param nbr number to check
* @param row
* @param col
* @param nbr
* @return true if legal
*/
boolean isLegal(int row, int col, int nbr);
@ -37,8 +34,8 @@ public interface SudokuSolver {
/**
* Get number on board
*
* @param row row
* @param col column
* @param row
* @param col
* @return number on board
*/
int get(int row, int col);
@ -46,9 +43,9 @@ public interface SudokuSolver {
/**
* Set number on board, numbers 1-9 are fixed values, 0 is unsolved.
*
* @param row row
* @param col column
* @param nbr number to set
* @param row
* @param col
* @param nbr
*/
void set(int row, int col, int nbr);

View file

@ -106,11 +106,4 @@ class SolverTest {
solver.set(7, 1, 8);
assertFalse(solver.solve());
}
@Test
void setBoardInvalidInputThrowsTest() {
Solver solver = new Solver();
assertThrows(NullPointerException.class, () -> solver.setBoard(null));
assertThrows(IllegalArgumentException.class, () -> solver.setBoard(new int[8][8]));
}
}