Ваш лог c имеет недостатки. Вы создадите конфигурации, которые не могут быть завершены, поэтому вы застрянете в do, пока l oop. Позвольте мне продемонстрировать это на простом примере:
1 2 3 4 5 6 7 8 9
4 5 6 1 2 3 . . .
Ни одна из позиций с точкой не может быть заполнена, поскольку в ячейке уже есть 7, 8 или 9.
Вы Можно написать решатель судоку, затем вы поместите случайные числа в сетку и попытаться решить ее. Как только найдется уникальное решение (это можно проверить, решив снизу, попробуйте 1, затем 2, затем 3 и т. Д., А сверху попробуйте сначала 9, затем 8, 7 и т. Д., Если 2 решения совпадают с ним. уникален), у вас есть судоку (не решенный, как тот, который вы пытаетесь сгенерировать).