jerryxjr1220 发表于 2016-9-30 06:42:44

Python编写的数独求解程序

本帖最后由 jerryxjr1220 于 2017-2-7 10:09 编辑

程序构思是穷举所有可能性,然后选择选项最少的进行依次尝试,以提高成功率。
基本上一个简单的数独在0.5s以内,中等难度的1s以内,困难的2s内完成。
不过,本程序对无解的数独求解可能会出错,因为我没考虑无解的情况,这个可以有待优化。
原始数独:
,
,
,
,
,
,
,
,


输出:










**** Hidden Message *****

pinro 发表于 2016-9-30 08:30:16

{:10_245:}数独爱好者进来学习一下

pinro 发表于 2016-9-30 09:27:03

看不大懂啊
请问一下
原理是不是把空位所有可能的值都列出来
然后只剩一种可能的空位就填上去

jerryxjr1220 发表于 2016-9-30 12:08:14

原理是把空位的所有可能值列出来,然后依次去用可能值尝试,正确就尝试下一个空位,错误就尝试下一个可能值。直到所有可能值都尝试完就结束,但是我没有考虑无解的情况~

天外飞mao 发表于 2016-9-30 14:14:35

厉害了我的哥

jerryxjr1220 发表于 2016-9-30 20:57:51

考虑了一下,可能多解的情况也没考虑到~

lb971216008 发表于 2016-10-2 11:02:59

我也喜欢数独

dh89 发表于 2016-11-16 15:14:13

学习下

会抓贼的老托比 发表于 2016-11-16 16:14:37

数独小时候玩过

薇薇 发表于 2016-11-16 22:19:30

{:9_241:}

bhsx 发表于 2016-11-17 08:56:44

{:5_91:}

大头鱼 发表于 2016-12-18 22:09:41

有事

zhihaoyu 发表于 2016-12-24 15:47:39

学习学习

yuan2016 发表于 2016-12-26 12:25:18

{:5_90:}

gopythoner 发表于 2017-4-14 21:51:53

厉害了

lsy19810210 发表于 2017-4-15 09:13:17

学习

小锟 发表于 2017-4-15 09:17:20

本帖最后由 小锟 于 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:}
抱歉,看了你的答案,我感觉自己理解错了
不好意思,膜拜大神

源稚空 发表于 2017-4-17 09:43:27

666

xpb 发表于 2017-4-17 17:36:39

这个程序好!!!!!!!

过期的牛奶 发表于 2017-4-18 19:11:57

厉害呀,来学习一下!
页: [1] 2 3
查看完整版本: Python编写的数独求解程序