Я только начал учить программирование, поэтому хочу попросить опытных программистов посмотреть мой код и дать совыеты по его улучшению. Программа решает судоку и работает без ошибок. В одном из уровней советовали создавать как можно больше классов, можете дать совет для чего их можнго было создать в этом коде? Спасибо за помощь 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(); } } }