Судоку | ||||||||
Сильно упрощенный вариант этого алгоритма | ||||||||
6 | 5 | 1 | 9 | |||||
4 | 9 | 8 | 1 | 2 | ||||
9 | 8 | 3 | ||||||
6 | 4 | 7 | 5 | 3 | ||||
5 | 6 | 1 | ||||||
1 | 8 | 4 | 9 | 6 | ||||
1 | 2 | 7 | ||||||
4 | 5 | 3 | 7 | 8 | ||||
7 | 1 | 6 | 5 |
Матрица попаданий | ||||||||
Количество возможных чисел в каждой клетке | ||||||||
Для каждой пустой клетки считаем количество всех возможных чисел, которые могут в ней стоять и записываем это число в матрицу попаданий. После того как матрица попаданий сформирована, в ней ищется клетка, в которой может быть наименьшее количество чисел, т.е. ищется клетка, которая может принимать только одно значение, тогда с полной уверенностью можно сказать, что именно это значение должно быть в этой клетке. После записи в очередную клетку значения, матрица попаданий пересчитывается и так до тех пор, пока в матрице попаданий все клетки примут значение "0", что будет свидетельствовать о том, что в эти клетки уже имеют значение.
В том случае, если в матрице попаданий нет клеток со значением 1, алгоритм все равно возьмет ту клетку, в которой значение наименьшее, но не равно "0", и выберет для нее возможное число. Это позволит минимизировать вероятность занесения неверного числа. К примеру, если в матрице судоку пустая клетка может принимать сразу 2 значения, и алгоритм выбирает эту клетку для записи, то он записывает в нее любое из этих 2 значений, т.к. вероятность нахождения в них каждого из этих значений наивысшая по сравнению с другими пустыми клетками, которые могут принимать большее количество значений
Для удобства восприятия, занесения значения в каждую последующую пустую клетку производится с интервалом в 1 секунду.
Можно занести свои значения в матрицу судоку, кликнув по нужной клетке.