File picker now refuses to load unsolvable files

This commit is contained in:
Imbus 2023-12-11 14:58:54 +01:00
parent e6cd5a2915
commit 270a9f381d
2 changed files with 21 additions and 4 deletions

View file

@ -26,13 +26,13 @@ public class SudokuController {
public void actionPerformed(ActionEvent e) {
// Solve the board
boolean solved = model.solve();
// Update the view
view.updateView(model.getBoard());
if (!solved) {
view.showErrorMessage("Could not solve the board.");
System.out.println("Could not solve the board.");
System.out.println(model.toString());
} else {
// Update the view
view.updateView(model.getBoard());
}
}
@ -70,6 +70,13 @@ public class SudokuController {
if (newBoard != null) {
// Set the model
model.setBoard(newBoard);
// Warn and clear if the board is not solvable
if(!model.isSolvable()) {
view.showErrorMessage("The board is not solvable.");
model.clear();
}
// Update the view
view.updateView(model.getBoard());
}
@ -113,7 +120,7 @@ public class SudokuController {
}
// If the input is invalid, value < 0 indicates parse error
if (!model.isLegal(row, col, value) || value < 0) {
if (value != 0 && !model.isLegal(row, col, value) || value < 0) {
value = 0;
view.showErrorMessage("Invalid input. Try again.");
}

View file

@ -29,7 +29,12 @@ public class Solver implements SudokuSolver {
/** Resets the board to all zeros */
@Override
public void clear() {
board = new int[9][9];
for (int[] row : board) {
for (int i = 0; i < row.length; ++i) {
row[i] = 0;
}
}
// board = new int[9][9];
}
/* {@inheritDoc} */
@ -144,6 +149,11 @@ public class Solver implements SudokuSolver {
return false;
}
// Ihe the number is already present in the cell
if (board[row][col] == num) {
return true;
}
// Check both the row and column
for (int i = 0; i < 9; i++) {
if (board[row][i] == num || board[i][col] == num) {