Sobes.tech
Junior — Middle
90

Автоматты түрде Sudoku шешімін тексеру жүйесін қалай жүзеге асырасыз?

Сұралған компаниялар
Лига Цифровой ЭкономикиЛига Цифровой Экономики

AI-дан жауап

sobes.tech AI

Для автоматической проверки решений судоку можно реализовать алгоритм, который проверяет три основных условия:

  1. В каждой строке все цифры от 1 до 9 встречаются не более одного раза.
  2. В каждом столбце все цифры от 1 до 9 встречаются не более одного раза.
  3. В каждом из девяти 3x3 блоков все цифры от 1 до 9 встречаются не более одного раза.

Примерный подход:

  • Представить судоку в виде двумерного массива int[9][9].
  • Для каждой строки, столбца и блока создать структуру (например, boolean[] или Set<Integer>) для отслеживания уже встреченных цифр.
  • Пройтись по всем ячейкам и проверять, не нарушается ли правило уникальности.

Пример кода на Java:

public boolean isValidSudoku(int[][] board) {
    for (int i = 0; i < 9; i++) {
        boolean[] rowCheck = new boolean[9];
        boolean[] colCheck = new boolean[9];
        boolean[] boxCheck = new boolean[9];
        for (int j = 0; j < 9; j++) {
            // Проверка строки
            if (board[i][j] != 0) {
                if (rowCheck[board[i][j] - 1]) return false;
                rowCheck[board[i][j] - 1] = true;
            }
            // Проверка столбца
            if (board[j][i] != 0) {
                if (colCheck[board[j][i] - 1]) return false;
                colCheck[board[j][i] - 1] = true;
            }
            // Проверка блока
            int rowIndex = 3 * (i / 3) + j / 3;
            int colIndex = 3 * (i % 3) + j % 3;
            if (board[rowIndex][colIndex] != 0) {
                if (boxCheck[board[rowIndex][colIndex] - 1]) return false;
                boxCheck[board[rowIndex][colIndex] - 1] = true;
            }
        }
    }
    return true;
}

Этот метод проверяет, что текущая доска судоку корректна. Для проверки решения нужно убедиться, что все ячейки заполнены и метод возвращает true.