检查矩阵中的列以进行重复并执行数字转换-Sudoku-Python

问题描述 投票:0回答:1

因此,我作为个人项目进行此操作,但在获得所需的结果时遇到了一些困难。

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)

因此,我上面的代码部分是当前随机创建我的行,这是我的意图。现在,我开始用另一个循环搜索矩阵,以了解列实际上是随机的。

    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

我进行列搜索的意图是利用列位置[K]和行位置[K],并在该行上弹出/移动另一个条目来代替重复项,然后重新检查并继续。在修整它之后,现在我看到的问题是,我最初的想法是使用循环或递归执行它,但这将是一个很大的兔子洞。我很想知道在这种情况下的选择,以确定如何替换行中的条目,还是我在这里使分辨率过于复杂?

我知道,为了获得更好的OOP,我应该关注的是将循环作为它们自己的功能进行分离,并且我打算这样做,因为我只是在数独的检查上受阻。

python loops duplicates sudoku
1个回答
0
投票

此循环将为您找到重复项并消失。

exclusions = [43606,125490,...]
def ID_Generator(new_clients): # This is a list of new client

  new_client_IDs = []

  while len(new_client_IDs) < len(new_clients):
    ID = randint(40000, 200000)
    if ID not in exclusions:
      new_client_IDs.append(ID)
    if list(dict.fromkeys(new_client_IDs)):

      new_client_IDs = list(dict.fromkeys(new_client_IDs))
© www.soinside.com 2019 - 2024. All rights reserved.