Так что я делаю это как личный проект, и у меня возникают некоторые трудности с получением результата, который я ищу.
def createSudoku():
rowCount = 9
columnCount = 9
gameBoard = []
##Row entry is randomized order
##Column entry is not randomized order
##Row entry cannot be duplicate
for row in range(rowCount):
rowList = []
sudokuNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for column in range(columnCount):
choice = random.choice(sudokuNumbers)
rowList.append(choice)
sudokuNumbers.remove(choice)
gameBoard.append(rowList)
Итак, вышеуказанная часть моего кода в настоящий момент создает мои строки наугад, что и было моим намерением. Прямо сейчас я начинаю поиск по матрице с другим l oop, чтобы определить, что столбцы на самом деле случайные.
K = 0
##Column Duplicate Algorithm
while(K < columnCount):
for sub in gameBoard:
columnK = sub[K]
sudokuNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for item in range(columnK):
if item in sudokuNumbers:
sudokuNumbers.remove(item)
else:
sub.append(sub.pop(sub.index(item)))
if ...
K += 1
Мое намерение для поиска по столбцу состоит в том, чтобы использовать позицию столбца [item] с расположением строки [K] и либо вставьте / переместите другую запись в этом ряду вместо дубликата, перепроверьте и продолжите. Проблема, которую я теперь вижу после того, как я возился с этим, заключалась в том, что мои первоначальные мысли заключались в том, чтобы использовать al oop или выполнить это рекурсивно, но это была бы довольно большая кроличья нора. Мне любопытно, чтобы в этой ситуации мне было предложено определить, как заменить запись в строке, или я слишком усложняю разрешение здесь?
Я понимаю, на чем я должен сосредоточиться для лучшего OOP состоит в том, чтобы разделить циклы как их собственные функции, и я намерен это сделать, я просто застреваю в этой проверке для своего судоку.