Fork me on GitHub
Судоку
Сильно упрощенный вариант этого алгоритма
6519
49812
983
64753
561
18496
127
45378
7165
Матрица попаданий
Количество возможных чисел в каждой клетке

Алгоритм

Для каждой пустой клетки считаем количество всех возможных чисел, которые могут в ней стоять и записываем это число в матрицу попаданий. После того как матрица попаданий сформирована, в ней ищется клетка, в которой может быть наименьшее количество чисел, т.е. ищется клетка, которая может принимать только одно значение, тогда с полной уверенностью можно сказать, что именно это значение должно быть в этой клетке. После записи в очередную клетку значения, матрица попаданий пересчитывается и так до тех пор, пока в матрице попаданий все клетки примут значение "0", что будет свидетельствовать о том, что в эти клетки уже имеют значение.

В том случае, если в матрице попаданий нет клеток со значением 1, алгоритм все равно возьмет ту клетку, в которой значение наименьшее, но не равно "0", и выберет для нее возможное число. Это позволит минимизировать вероятность занесения неверного числа. К примеру, если в матрице судоку пустая клетка может принимать сразу 2 значения, и алгоритм выбирает эту клетку для записи, то он записывает в нее любое из этих 2 значений, т.к. вероятность нахождения в них каждого из этих значений наивысшая по сравнению с другими пустыми клетками, которые могут принимать большее количество значений

Для удобства восприятия, занесения значения в каждую последующую пустую клетку производится с интервалом в 1 секунду.

Можно занести свои значения в матрицу судоку, кликнув по нужной клетке.