Я только начал учить программирование, поэтому хочу попросить опытных программистов посмотреть мой код и дать совыеты по его улучшению.
Программа решает судоку и работает без ошибок. В одном из уровней советовали создавать как можно больше классов, можете дать совет для чего их можнго было создать в этом коде?
Спасибо за помощь
public class Main {
public static final int BOARD_SIZE = 9;
public static void main(String[] args) {
int[][] fieldArray = {
{0, 0, 0, 0, 0, 0, 5, 0, 8},
{2, 4, 4, 5, 0, 0, 0, 3, 0},
{0, 5, 7, 6, 3, 2, 0, 0, 0},
{5, 7, 0, 4, 0, 0, 2, 6, 0},
{0, 0, 8, 1, 0, 9, 0, 0, 0},
{4, 0, 0, 7, 6, 0, 0, 1, 0},
{0, 8, 0, 0, 7, 6, 0, 0, 2},
{9, 6, 3, 2, 5, 4, 0, 0, 0},
{0, 0, 5, 8, 0, 0, 3, 4, 0}
};
if (solveBoard(fieldArray))
System.out.println("solved");
else
System.out.println("unsolvable shit");
printBoard(fieldArray);
}
public static boolean isValidInRow (int[][] board, int row, int number) {
for (int i = 0; i < BOARD_SIZE; i++) {
if (board[row][i] == number)
return false;
}
return true;
}
public static boolean isValidInColumn (int[][] board, int column, int number) {
for (int i = 0; i < BOARD_SIZE; i++) {
if (board[i][column] == number)
return false;
}
return true;
}
public static boolean isValidInSquire (int[][] board,int row, int column, int number) {
int rowIndex = row - row % 3;
int columnIndex = column - column % 3;
for (int i = rowIndex; i < rowIndex + 3; i++) {
for (int j = columnIndex; j < columnIndex + 3; j++) {
if (board[i][j] == number)
return false;
}
}
return true;
}
public static boolean isThere(int[][] board,int row, int column, int number) {
return isValidInRow(board, row, number)&&
isValidInSquire(board, row, column, number)&&
isValidInColumn(board, column, number);
}
public static boolean solveBoard(int [][] board) {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
if(board[i][j] == 0) {
for (int k = 1; k <= BOARD_SIZE ; k++) {
if (isThere(board, i, j, k)) {
board[i][j] = k;
if (solveBoard(board)) {
return true;
}
else {
board [i][j] = 0;
}
}
}
return false;
}
}
}
return true;
}
public static void printBoard (int[][] fieldArray) {
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(fieldArray[i][j] + " ");
}
System.out.println();
}
}
}
sure you
16 уровень
Моя первая программа
Комментарии
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
У этой страницы еще нет ни одного комментария