Решение делится на 2 части:
A. Генерация числового шаблона 600 миллиардов
B. Создание шаблона маскирования ~ 7e23 комбинаций
A) Для числового шаблона самый быстрый способ, который может генерировать уникальные комбинации с NO временем, потраченным на поиск или тестирование
Шаг 1. Выберите уже существующую матрицу, я выбрал нижеследующую, поскольку она может быть легко сделана человеком без помощи вычислительного устройства или решателя:
Первая строка - числа в порядке возрастания
Второй ряд также в порядке возрастания, но начинается с 4 и вращается вокруг
Третий ряд также находится в порядке возрастания, но начинается с 7 и вращается вокруг
Строка 4,5,6: заменить столбец из трех ячеек на верхний правый столбец - 2 5 8 и перевернуть ячейку 3x3 для последнего столбца
Строка 7,8,9: заменить столбец из трех ячеек на верхний правый столбец - 3 6 9 и перевернуть ячейку 3x3 для последнего столбца
1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 3 1 5 6 4 8 9 7
5 6 4 8 9 7 2 3 1
8 9 7 2 3 1 5 6 4
3 1 2 6 4 5 9 7 8
6 4 5 9 7 8 3 1 2
9 7 8 3 1 2 6 4 5
Шаг 2. Перемешайте цифры и замените все остальные ячейки
Шаг 3. Произвольно переставить столбцы 1,2 и 3 внутри себя
Шаг 4. Произвольно переставить столбцы 4,5 и 6 внутри себя
Шаг 5. Произвольно переставить столбцы 7,8 и 9 внутри себя
Шаг 6. Произвольно переставить ряды 1,2 и 3 внутри себя
Шаг 7. Произвольно переставить ряды 4,5 и 6 внутри себя
Шаг 8. Произвольно переставить строки 7,8 и 9 внутри себя
Шаг 9. Произвольно переставить в 3 группы столбцов размером 9x3
Шаг 10. Произвольно переставить в 3 ряда строк размером 3х9
вуаля ...
5 8 3 1 6 4 9 7 2
7 2 9 3 5 8 1 4 6
1 4 6 2 7 9 3 8 5
8 5 2 6 9 1 4 3 7
3 1 7 4 2 5 8 6 9
6 9 4 8 3 7 2 5 1
4 6 5 9 1 3 7 2 8
2 3 1 7 8 6 5 9 4
9 7 8 5 4 2 6 1 3
B) Для маскирующего шаблона нам нужен решающий алгоритм. Поскольку у нас уже есть довольно уникальная сетка чисел (что также решаемо!), Это дает нам более высокую производительность при использовании решателя
Шаг 1. Начните с выбора 15 случайных местоположений из 81.
Шаг 2: Проверьте с помощью решателя, есть ли у него уникальное решение
Шаг 3: Если решение не уникально, выберите дополнительное местоположение. повторять шаги 2 и 3, пока не будет найдено уникальное решение
Это должно дать вам очень уникальную и быструю доску судоку.