diff --git a/Hard/sudoku-solver/Solution.java b/Hard/sudoku-solver/Solution.java index 91482bf..bc30cf6 100644 --- a/Hard/sudoku-solver/Solution.java +++ b/Hard/sudoku-solver/Solution.java @@ -1,57 +1,68 @@ class Solution { - char[][] BOARD; + char[][] Board; boolean isValid(int row, int col, char num) { for (int i = 0; i < 9; i++) { - if (BOARD[i][col] == num) + if (Board[i][col] == num) { return false; - if (BOARD[row][i] == num) + } + + if (Board[row][i] == num) { return false; + } } row = row - row % 3; col = col - col % 3; - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) - if (BOARD[i + row][j + col] == num) + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (Board[i + row][j + col] == num) { return false; + } + } + } return true; } int[] nextEmpty() { - for (int i = 0; i < 9; i++) - for (int j = 0; j < 9; j++) - if (BOARD[i][j] == '.') + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 9; j++) { + if (Board[i][j] == '.') { return new int[] { i, j }; + } + } + } return new int[] { -1, -1 }; } boolean solver() { int[] tmp = nextEmpty(); - if (tmp[0] == -1) + if (tmp[0] == -1) { return true; + } int row = tmp[0]; int col = tmp[1]; for (int i = 1; i <= 9; i++) { if (isValid(row, col, (char) (48 + i))) { - BOARD[row][col] = (char) (48 + i); + Board[row][col] = (char) (48 + i); - if (solver()) + if (solver()) { return true; + } } - BOARD[row][col] = '.'; + Board[row][col] = '.'; } return false; } public void solveSudoku(char[][] board) { - BOARD = board; + Board = board; solver(); } }