python - 检查矩阵中的列是否重复并执行数字切换 - 数独 - Python
问题描述
因此,我将其作为个人项目进行,并且在获得所需的结果时遇到了一些困难。
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
我对列搜索的意图是利用列的位置 [item] 和行位置 [K],并在该行上弹出/移动另一个条目来代替重复项,重新检查并继续。我在修改它之后现在看到的问题是,我最初的想法是使用循环或递归执行它,但这将是一个相当大的兔子洞。我很好奇我在这种情况下的选择,以确定如何替换行上的条目,还是我在这里过度复杂化了解决方案?
我知道,为了更好的 OOP,我应该专注于将循环分离为它们自己的函数,这是我的意图,我只是卡在我的 Sudoku 的这个检查中。
解决方案
此循环将为您找到重复项并将其消失。
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))
推荐阅读
- consul - 领事意图不适用于领事服务
- .htaccess - .htaccess 文件阻止加载图像
- object-detection - 每个图像具有多个类以进行实例分割的影响?
- python - 将纬度、经度和值表转换为纬度、经度和值的二维网格
- flutter - GETX:如何以正确的方式使用 Future
- mysql - 库存抵扣与退库存冲突如何解决
- python-3.x - 我应该怎么做才能运行此代码(不更改代码)
- php - PHP Google Docs API - 创建选项不起作用
- javascript - Sweetalert 不会显示,但会更新
- java - 种类
HashMap 使用比较器且不使用 TreeMap