Судоку
Сильно упрощенный вариант этого алгоритма
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 секунду.

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