Я просмотрел несколько подобных вопросов здесь, но ни один из них не решил мою проблему, и, кроме того, я не уверен на 100%, в чем заключается моя проблема.
В любом случае, я пытаюсь сгенерировать список на python, содержащий 9 списков по 9 элементов в каждом. Поскольку этот список предназначен для генератора судоку, списки должны соответствовать правилам головоломки судоку.
Вот что я пытался сделать:
def generateBord (mtx) :
while (len(mtx) < 9) and (len(mtx) != 9):
newrow = generateRow(mtx)
mtx.append(newrow)
return mtx
def generateRow (mtx):
counter = 0
row = []
while counter < 9:
num = random.randint(1,9)
idx = len(row)
if (not(num in row)):
for x in mtx:
if (num != x[idx]):
row.append(num)
counter += 1
if (len(row) == 9):
return row
Когда я пытаюсь запустить код, он никогда не заканчивается, поэтому я думаю, что проблема где-то в бесконечном цикле. Методом проб и ошибок я сузил проблему до этого бита:
for x in mtx:
if (num != x[idx]):
row.append(num)
counter += 1
Однако я не совсем уверен, в чем именно проблема. При вызове функции generateBord (mtx) я даю ей
mtx = []
в качестве аргумента.
Я надеюсь, что это не слишком расплывчато. В чем проблема именно здесь, и как я могу это исправить? Или мой подход вообще нежизнеспособен?