Renamed variables
This commit is contained in:
parent
18abcba219
commit
4760816cfb
@ -40,15 +40,15 @@ public class BacktrackingAlgorithm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean solve(int[][] board) {
|
private boolean solve(int[][] board) {
|
||||||
for (int r = BOARD_START_INDEX; r < BOARD_SIZE; r++) {
|
for (int row = BOARD_START_INDEX; row < BOARD_SIZE; row++) {
|
||||||
for (int c = BOARD_START_INDEX; c < BOARD_SIZE; c++) {
|
for (int column = BOARD_START_INDEX; column < BOARD_SIZE; column++) {
|
||||||
if (board[r][c] == NO_VALUE) {
|
if (board[row][column] == NO_VALUE) {
|
||||||
for (int k = MIN_VALUE; k <= MAX_VALUE; k++) {
|
for (int k = MIN_VALUE; k <= MAX_VALUE; k++) {
|
||||||
board[r][c] = k;
|
board[row][column] = k;
|
||||||
if (isValid(board, r, c) && solve(board)) {
|
if (isValid(board, row, column) && solve(board)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
board[r][c] = NO_VALUE;
|
board[row][column] = NO_VALUE;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -57,44 +57,44 @@ public class BacktrackingAlgorithm {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValid(int[][] board, int r, int c) {
|
private boolean isValid(int[][] board, int row, int column) {
|
||||||
return rowConstraint(board, r) &&
|
return rowConstraint(board, row) &&
|
||||||
columnConstraint(board, c) &&
|
columnConstraint(board, column) &&
|
||||||
subsectionConstraint(board, r, c);
|
subsectionConstraint(board, row, column);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean subsectionConstraint(int[][] board, int r, int c) {
|
private boolean subsectionConstraint(int[][] board, int row, int column) {
|
||||||
boolean[] constraint = new boolean[BOARD_SIZE];
|
boolean[] constraint = new boolean[BOARD_SIZE];
|
||||||
int subsectionRowStart = (r / SUBSECTION_SIZE) * SUBSECTION_SIZE;
|
int subsectionRowStart = (row / SUBSECTION_SIZE) * SUBSECTION_SIZE;
|
||||||
int subsectionRowEnd = subsectionRowStart + SUBSECTION_SIZE;
|
int subsectionRowEnd = subsectionRowStart + SUBSECTION_SIZE;
|
||||||
|
|
||||||
int subsectionColumnStart = (c / SUBSECTION_SIZE) * SUBSECTION_SIZE;
|
int subsectionColumnStart = (column / SUBSECTION_SIZE) * SUBSECTION_SIZE;
|
||||||
int subsectionColumnEnd = subsectionColumnStart + SUBSECTION_SIZE;
|
int subsectionColumnEnd = subsectionColumnStart + SUBSECTION_SIZE;
|
||||||
|
|
||||||
for (int i = subsectionRowStart; i < subsectionRowEnd; i++) {
|
for (int r = subsectionRowStart; r < subsectionRowEnd; r++) {
|
||||||
for (int j = subsectionColumnStart; j < subsectionColumnEnd; j++) {
|
for (int c = subsectionColumnStart; c < subsectionColumnEnd; c++) {
|
||||||
if (!checkConstraint(board, i, constraint, j)) return false;
|
if (!checkConstraint(board, r, constraint, c)) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean columnConstraint(int[][] board, int c) {
|
private boolean columnConstraint(int[][] board, int column) {
|
||||||
boolean[] constraint = new boolean[BOARD_SIZE];
|
boolean[] constraint = new boolean[BOARD_SIZE];
|
||||||
return IntStream.range(BOARD_START_INDEX, BOARD_SIZE)
|
return IntStream.range(BOARD_START_INDEX, BOARD_SIZE)
|
||||||
.allMatch(i -> checkConstraint(board, i, constraint, c));
|
.allMatch(row -> checkConstraint(board, row, constraint, column));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean rowConstraint(int[][] board, int r) {
|
private boolean rowConstraint(int[][] board, int row) {
|
||||||
boolean[] constraint = new boolean[BOARD_SIZE];
|
boolean[] constraint = new boolean[BOARD_SIZE];
|
||||||
return IntStream.range(BOARD_START_INDEX, BOARD_SIZE)
|
return IntStream.range(BOARD_START_INDEX, BOARD_SIZE)
|
||||||
.allMatch(i -> checkConstraint(board, r, constraint, i));
|
.allMatch(column -> checkConstraint(board, row, constraint, column));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkConstraint(int[][] board, int r, boolean[] constraint, int c) {
|
private boolean checkConstraint(int[][] board, int row, boolean[] constraint, int column) {
|
||||||
if (board[r][c] != NO_VALUE) {
|
if (board[row][column] != NO_VALUE) {
|
||||||
if (!constraint[board[r][c] - 1]) {
|
if (!constraint[board[row][column] - 1]) {
|
||||||
constraint[board[r][c] - 1] = true;
|
constraint[board[row][column] - 1] = true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user