跟朋友最近聊起来数独游戏,突发奇想使用python编写一个自动计算数独解的小程序。
数独的规则不再过多阐述,在此描述一下程序的主要思路:
(当前程序只针对于简单的数独,更复杂的还待深入挖掘)
1.计算当前每个空格可能的取值集合,并将空格顺序值对应取值集合置于字典中;
2.对取值集合位数为1,即空格处为单一取值的进行赋值,(填入动作),重复1刷新字典直到字典为空位置;
当前实现如下:
1.将数独输入列表中,并定义函数count_candinate_number(j)根据数独规则计算每一个为0的位置的当前可能取值:
#编辑数独题目,将题目输入列表中
question = [6,0,7,0,0,0,9,0,3,
0,0,8,0,0,7,0,0,0,
3,0,0,0,8,2,0,7,5,
0,1,2,3,0,5,0,0,0,
0,0,6,0,0,0,5,0,0,
0,0,0,4,0,6,7,1,0,
2,6,0,7,4,0,0,0,8,
0,0,0,8,0,0,6,0,0,
7,0,5,0,0,0,1,0,9]
# print(question[0])
#返回当前数独为0的空格中所有可能取值
def count_candidate_number(j):
exist_all_number = [] #当前横竖大方格内所有出现的数字集
candidate_number = [] #该方格内所有的数字候选集
SD_Row = int(j)