генератор чисел питона возможен бесконечный цикл - PullRequest
0 голосов
/ 05 января 2019

Я просмотрел несколько подобных вопросов здесь, но ни один из них не решил мою проблему, и, кроме того, я не уверен на 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 = [] 

в качестве аргумента. Я надеюсь, что это не слишком расплывчато. В чем проблема именно здесь, и как я могу это исправить? Или мой подход вообще нежизнеспособен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...