用python设计数独的心得体会_python实现数独算法实例

本文实例讲述了python实现数独算法的方法。分享给大家供大家参考。具体如下:

# -*- coding: utf-8 -*-

'''

Created on 2012-10-5

@author: Administrator

'''

from collections import defaultdict

import itertools

a = [

[ 0,7,0],#0

[ 5,3,6,#1

[ 0,2,8,#2

#

[ 0,5,#3

[ 0,4,1,#4

[ 0,9,#5

#

[ 0,#6

[ 0,3],#7

[ 0,#8

# 0,|4,|7,8

]

#a = [

# [0,#0

# [0,#1

# [0,#2

# #

# [0,#3

# [0,#4

# [0,#5

# #

# [0,#6

# [0,#7

# [0,#8

## 0,8

# ]

exists_d = dict((((h_idx,y_idx),v) for h_idx,y in enumerate(a) for y_idx,v in enumerate(y) if v))

h_exist = defaultdict(dict)

v_exist = defaultdict(dict)

for k,v in exists_d.items():

h_exist[k[ 0]][k[ 1]] = v

v_exist[k[ 1]][k[ 0]] = v

aa = list(itertools.permutations(range(1,10),9))

h_d = {}

for hk,hv in h_exist.items():

x = filter(lambda x:all((x[k] == v for k,v in hv.items())),aa)

x = filter(lambda x:all((x[vk] != v for vk,vv in v_exist.items() for k,v in vv.items() if k != hk)),x)

# print x

h_d[hk] = x

def test(x,y):

return all([y[i] not in [x_[i] for x_ in x] for i in range(len(y)) ])

def test2(x):

return len(set(x)) != 9

s = set(range(9))

sudokus = []

for l0 in h_d[0 ]:

for l1 in h_d[ 1]:

if not test((l0,),l1):

continue

for l2 in h_d[ 2]:

if not test((l0,l1),l2):

continue

# 1,3行 进行验证

if test2([l0[ 0],l0[ 1],l0[ 2],l1[ 0],l1[ 1],l1[ 2],l2[ 0],l2[ 1],l2[ 2]

]) : continue

if test2([l0[ 3],l0[ 4],l0[ 5],l1[ 3],l1[ 4],l1[ 5],l2[ 3],l2[ 4],l2[ 5]

]) : continue

if test2([l0[ 6],l0[ 7],l0[ 8],l1[ 6],l1[ 7],l1[ 8],l2[ 6],l2[ 7],l2[ 8]

]) : continue

for l3 in h_d[ 3]:

if not test((l0,l1,l2),l3):

continue

for l4 in h_d[ 4]:

if not test((l0,l2,l3),l4):

continue

for l5 in h_d[ 5]:

if not test((l0,l3,l4),l5):

continue

# 4,5,6行 进行验证

if test2([l3[ 0],l3[ 1],l3[ 2],l4[ 0],l4[ 1],l4[ 2],l5[ 0],l5[ 1],l5[ 2]

]) : continue

if test2([l3[ 3],l3[ 4],l3[ 5],l4[ 3],l4[ 4],l4[ 5],l5[ 3],l5[ 4],l5[ 5]

]) : continue

if test2([l3[ 6],l3[ 7],l3[ 8],l4[ 6],l4[ 7],l4[ 8],l5[ 6],l5[ 7],l5[ 8]

]) : continue

for l6 in h_d[ 6]:

if not test((l0,l4,l5,l6):

continue

for l7 in h_d[ 7]:

if not test((l0,l6),l7):

continue

for l8 in h_d[ 8]:

if not test((l0,l6,l7),l8):

continue

# 7,8,9行 进行验证

if test2([l6[ 0],l6[ 1],l6[ 2],l7[0 ],l7[1 ],l7[2 ],l8[0 ],l8[1 ],l8[2 ]

]) : continue

if test2([l6[ 3],l6[ 4],l6[ 5],l7[3 ],l7[4 ],l7[5 ],l8[3 ],l8[4 ],l8[5 ]

]) : continue

if test2([l6[ 6],l6[ 7],l6[ 8],l7[6 ],l7[7 ],l7[8 ],l8[6 ],l8[7 ],l8[8 ]

]) : continue

print l0

print l1

print l2

print l3

print l4

print l5

print l6

print l7

print l8

sudokus.append((l0,l7,l8))

希望本文所述对大家的Python程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css页面布局的感想,css布局实践感想(示例代码)

自己的一些‘想法’,想要记录下来。在实际写的时候经常会“随心所欲”,希望这个笔记能让自己更"规范"。我的业务主要是围绕webApp和微信端,思想上靠近移动端布局。1.最大的容器通常使用类名做外部最大容器,这也是很多ui…

ftp上传文件夹_ftp同步软件哪个好,ftp同步软件哪个好,6款好用推荐

ftp同步软件哪个好呢?不知道大家用过ftp同步工具吗?小编用过几款ftp同步工具很好用。有的软件有定时上传下载的功能,定时这个功能是真的很棒了,节省了很多时间而且还很方便快捷。下面小编就来推荐六款好用的ftp同步软件吧。第一款…

字符串格式化成时间格式_JAVA | 常用的日期/时间格式化方式

引言我们在开发过程中,在数据库中经常会看到beginTime、updateTime和endTime这些字段,这些可能是为了记录业务操作的某个时间、日期等信息。特此,总结一些在代码中常用的日期、时间格式化的方法模板。DateFormatDateFormat继承MessageFormat&…

飞车手游服务器维护,QQ飞车手游更新出现异常怎么办 更新异常原因及解决方法技巧...

最近很多玩家都在体验QQ飞车手游吧,而且最近又一次更新,更新之后,大家发现出现各种异常BUG,那么QQ飞车手游更新出现异常怎么办?更新异常原因及解决方法!如果你也遇到这样的情况,不妨来看看小编是如何解决的吧!QQ飞车手…

域控制器安装完成没有_tcp_udp_究竟什么才叫域控制器?

自从特斯拉问世以来,对他的对标工作全国都在如火如荼的进行,然后大家发现特斯拉的总线网络拓扑跟现有传统车的差别就像安卓系统跟苹果系统的差别一样大,虽然都能打电话发短信装微信,但是内部却是完全不一样。随即全国的汽车从业者…

csgo卡住关不掉_csgo退出卡住了 | 手游网游页游攻略大全

发布时间:2016-05-08 lol发条魔灵的神秘魔偶活动已经开始啦,但是有玩家反应打不开活动页面吧,下面这篇攻略为大家带来的是lol发条魔灵的神秘魔偶活动为什么我打不开活动页面 为什么活动页面卡住了. lol发条魔灵的神秘魔偶活动为什么我打不开活动 ... 标签: LOL 游戏攻略 游戏…

dell服务器r730安装esxi系统,安装Esxi系统重装Esxi系统

安装esxi系统、或者已经安装了esxi需要重装环境:Dell R730服务器。前期准备:将VMware ESXi 5.5.0的安装镜像要提前准备好,通过光碟、U盘、idrac管理界面挂载方式安装都行。1、加载VMware ESXi 5.5.0版的ISO文件,ESXi引导装入程序&…

10怎么设置pg接口_西门子S7300 PLC时间日期怎么读取?

很多情况下我们都需要根据时间日期的变化来改变自动化系统的控制方式,这时候我们就需要将这些时间和日期的信息,从PLC中调出,下面我们就一起来学习,S7-300PLC是将时间日期信息如何进行存储的?简单应用01S7-300PLC中实际…

获取ajax传过来的数据_大数据编辑问题

【摘要】最近项目用到了大数据的编辑问题,在此做一个简单的总结【作者】田鋆鹏在最近的项目中遇到一个问题,这个问题的起因是因为在调用接口传参是传入的数据太大,导致接口调用失败【重构建议:田甜】1.我们在重构VUE项目的时候, POST请求并没有发成功&am…

第五人格维修服务器时间,第五人格调整维护时间 第五人格新赛季奖励皮肤一览...

第五人格调整维护时间 第五人格新赛季奖励皮肤一览,第五人格正式服于2018年5月24日进行停服维护,从本周起,第五人格将会调整维护时间,将于每周四早上8:30进行停服维护。更新内容:新赛季:[新赛季]&#xff1…

水星怎么设置网速最快_水星无线路由器如何设置网速限制 水星路由器怎么让别人网速限制方法...

我们在应用电脑上的情况下,一直会碰到许多 的电脑上难点。在我们在碰到了水星路由器如何设置速度限制的情况下,那麼大家应当怎么办呢?今日就一起来追随专业知识屋的我看一下怎么解决的吧。水星路由器如何设置速度限制:一、水星路由…

ajax参数是json数据类型,如何保护$ .ajax数据类型:json Post参数

我正在使用通过Web服务方法进行更新的参数。 请参阅下面的帖子。Post: http://myweb.com:8241/web/Dashboard.aspx/BindDatatableHost: localhost:8241User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0Accept: application/json, text/j…

从源PC上一次性p2v(qcow2)的构想

磁盘分区表,虚拟硬盘文件,操作系统引导 1. 基本概念和术语 源硬盘:一般就是客户的PC机的硬盘,硬盘里面包含了Windows分区。 源Windows:以源硬盘启动的Windows环境。 虚拟磁盘文件:文件格式有qcow2、vhd…

crt 8.7.3 黑暗模式_科技有意思 | 黑黑黑黑黑黑黑黑暗模式

不知从什么时候,手机上的黑暗模式成了系统的标配。本来这只是系统中的一个功能,现在经过从iOS 13系统的终于支持、苹果督促包括腾讯在内的开发者尽快适配,到一直不支持黑暗模式的微信也答应尽快开发相关功能,说得多了好像变成了一…

国内稳定的暗黑2服务器,国内暗黑2战网的基本概念介绍

战网:战网就是指暗黑的官方战网:BATTLE NET,简称BN。包括ASIA(1、2、3),EUROPE,USE,USW服务器。私服:相对于战网来说,属于非官方的服务器(私人服务器),除了以上所提到的6…

2 s锁是什么_《演员请就位》:一场戏拿了2张S卡,任敏凭什么打败老戏骨?

《演员请就位》终于上映了。这一期的节目明显要比之前要残忍,一上来先给40位演员来了一个市场评级。这一评可不要紧,S级别的都是年轻的演员,除了李志刚。但李志刚是男的,用制片人的话来说“正处在黄金时期”。而女的就比较惨了&am…

根据端口不同来切换站点_根据不同高温气体对窑炉的侵蚀,来选用相应的耐火材料...

根据不同高温气体对窑炉的侵蚀,来选用相应的耐火材料。由于高温窑炉的操作条件不同,因而其燃烧气体存在的侵蚀性成分也是不同的,从而导致与之接触的耐火材料受到各种不同的严重侵蚀。这说明只有根据具体的使用条件选择相应的耐火材料才能获得…

原神的天空岛服务器位置,原神天空岛服和世界树服数据互通吗

原神天空岛服和世界树服是游戏开服初始服务器,玩家们能在官服与B服中自由选择哦,那么原神天空岛服和世界树服数据互通吗、原神天空岛世界树服务器有什么区别吗,跑跑车手游网为大家带来了介绍。*原神天空岛服和世界树服数据互通吗?…

js 正则 或者_如何彻底搞懂面向 Web 开发者的正则表达式?

对于正则表达式,开发者如何跳出云里雾里的谜团?作者 | Chris Achard译者 | 弯月,责编 | 郭芮出品 | CSDN(ID:CSDNnews)以下为译文:正则表达式能在字符串中查找匹配特定模式的子字符串。在JavaScript中,可以…

域环境下文件服务器,域和文件服务器

域和文件服务器 内容精选换一换您可以使用已有的弹性云服务器快速创建伸缩配置。此时,伸缩配置中的云服务器类型、vCPU、内存、镜像、磁盘参数信息将默认与选择的云服务器规格保持一致。登录管理控制台。选择“计算 > 弹性伸缩 > 伸缩实例”。单击“创建伸缩配…