Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数独解算器不能解决所有的数独难题_Python_Python 3.x_Sudoku - Fatal编程技术网

Python 数独解算器不能解决所有的数独难题

Python 数独解算器不能解决所有的数独难题,python,python-3.x,sudoku,Python,Python 3.x,Sudoku,我已经在一个数独解算器上工作了一段时间了,我刚刚实现了一个数字是否只能进入一个空间的检测,但它不起作用。此外,以前的一些代码似乎根本不起作用 def方形解算器(电路板): “”“从方框中的可能值中删除确认值”“” 全球可能性板 #设置一个调制器与之相乘,以获得一个正方形的3x3网格,第一个值为行,第二个值为列 blockNum=[0,0] 对于范围(9)内的uu: #检查其中一个正方形中的9个数字的循环 对于范围(3)内的x: 对于范围(3)内的y: 如果不是板[(blockNum[0]*3)+

我已经在一个数独解算器上工作了一段时间了,我刚刚实现了一个数字是否只能进入一个空间的检测,但它不起作用。此外,以前的一些代码似乎根本不起作用

def方形解算器(电路板):
“”“从方框中的可能值中删除确认值”“”
全球可能性板
#设置一个调制器与之相乘,以获得一个正方形的3x3网格,第一个值为行,第二个值为列
blockNum=[0,0]
对于范围(9)内的uu:
#检查其中一个正方形中的9个数字的循环
对于范围(3)内的x:
对于范围(3)内的y:
如果不是板[(blockNum[0]*3)+x][(blockNum[0]*3)+y]==”:#检查该平方是否为数字
#检查其中一个方格中的所有空白点以查找该数字,然后将其删除
对于范围(3)内的z:
对于范围(3)内的w:
尝试:
#从可能的线路板上删除该号码
可能板[(块编号[0]*3)+z][(块编号[1]*3)+w]。删除(
板[(块数[0]*3)+x][(块数[1]*3)+y])
#如果它不能做任何事情,运行这个
除了(ValueError,AttributeError):
通过
blockNum=block_num(blockNum)
返回板
计数器=[0]*9
blockNum=[0,0]
对于范围(9)内的uu:
对于范围(3)内的x:
对于范围(3)内的y:
#检查可能出现的电路板并计算可能出现的数字出现的次数
如果类型(possibleBoard[(blockNum[0]*3)+x][(blockNum[0]*3)+y])==列表:
对于范围内的z(len(可能板[(块数[0]*3)+x][(块数[0]*3)+y]):
计数器[possibleBoard[(blockNum[0]*3)+x][(blockNum[0]*3)+y][z]-1]+=1
对于范围内的x(透镜(计数器)):
#检查是否有任何时候只有一个数字出现
如果计数器[x]==1:
对于范围(3)内的y:
对于范围(3)内的z:
尝试:
#查找单数,并确定该数
如果(x+1)在可能的卡片[(blockNum[0]*3)+y][(blockNum[0]*3)+z]中:
板[(块数[0]*3)+y][(块数[0]*3)+z]=x+1
除类型错误外:
通过
blockNum=block_num(blockNum)
#柜台休息
计数器=[0]*9
我重写了这两段代码,但这两次都没有解决数独难题。我不知道怎么回事,但我认为这可能与
板[(blockNum[0]*3)+x][(blockNum[0]*3)+y]
部分有关


完整的代码是。

你有代码段
board[(blockNum[0]*3)+x][(blockNum[0]*3)+y]
你所有的问题都源于它应该是
board[(blockNum[0]*3)+x][(blockNum[1]*3)+y]
。因为它是用相同的数字来计算行和列,所以它只能按对角线方向进行。解决这个问题。

也许数独游戏不像你的算法假设的那么简单。@khelwood我一直在使用这个数独游戏()和一个在线解算器()如果我的代码被卡住了,根据数独解算器的说法,这个地方是可以用我的代码来解决的。我花了至少10个小时盯着代码看,直到现在我都没有看到。