Python编写的数独求解程序
本帖最后由 jerryxjr1220 于 2017-2-7 10:09 编辑程序构思是穷举所有可能性,然后选择选项最少的进行依次尝试,以提高成功率。
基本上一个简单的数独在0.5s以内,中等难度的1s以内,困难的2s内完成。
不过,本程序对无解的数独求解可能会出错,因为我没考虑无解的情况,这个可以有待优化。
原始数独:
,
,
,
,
,
,
,
,
输出:
**** Hidden Message *****
{:10_245:}数独爱好者进来学习一下 看不大懂啊
请问一下
原理是不是把空位所有可能的值都列出来
然后只剩一种可能的空位就填上去 原理是把空位的所有可能值列出来,然后依次去用可能值尝试,正确就尝试下一个空位,错误就尝试下一个可能值。直到所有可能值都尝试完就结束,但是我没有考虑无解的情况~ 厉害了我的哥 考虑了一下,可能多解的情况也没考虑到~ 我也喜欢数独 学习下 数独小时候玩过 {:9_241:} {:5_91:} 有事 学习学习 {:5_90:} 厉害了 学习 本帖最后由 小锟 于 2017-4-15 09:18 编辑
import itertools as t
a = range(1,10)
s = 0
def search(shuduliebiao):
global a
b = []
for each in shuduliebiao :
if each in a:
seat = shuduliebiao.index(each)
b.append(seat)
return b
shuduliebiao =
b = search(shuduliebiao)
length = len(b)
aims = t.permutations(a,9)
for aim in aims:
aim = list(aim)
for every in b:
if aim == shuduliebiao:
s+=1
if s == length:
print aim
s = 0
错误的情况有什么情况,感觉九个格子的数独应该没什么什么错误的{:9_220:}
抱歉,看了你的答案,我感觉自己理解错了
不好意思,膜拜大神 666 这个程序好!!!!!!! 厉害呀,来学习一下!