python 示例分享---逻辑推理编程解决八皇后


Posted in Python onJuly 20, 2014

可以和Haskell , Prolog 一样做到模式匹配,

建立逻辑推到规则,描述问题,得出答案。

from pyDatalog import pyDatalog

pyDatalog.create_atoms( 'N, N1, X, Y, X0, X1, X2, X3, X4, X5, X6, X7' )
pyDatalog.create_atoms( 'ok, queens, next_queen, pred, pred2' )

size = 8
ok( X1, N, X2 ) <= ( X1 != X2 ) & ( X1 != X2 + N ) & ( X1 != X2 - N )

pred( N, N1 )  <= ( N > 1 ) & ( N1 == N - 1 )
queens( 1, X ) <= ( X1._in( range( size ) ) ) & ( X1 == X[0] )
queens( N, X ) <= pred( N, N1 ) & queens( N1, X[:-1] ) & next_queen( N, X )

pred2( N, N1 )   <= ( N > 2 ) & ( N1 == N - 1 )
next_queen( 2, X ) <= ( X1._in( range( 8 ) ) ) & ok( X[0], 1, X1 ) & ( X1 == X[1] )
next_queen( N, X ) <= pred2( N, N1 ) & next_queen( N1, X[1:] ) & ok( X[0], N1, X[-1] ) 

print( queens( size, ( X0, X1, X2, X3, X4, X5, X6, X7 ) ) )
Python 相关文章推荐
Python实现多行注释的另类方法
Aug 22 Python
python处理大数字的方法
May 27 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
Python编程实战之Oracle数据库操作示例
Jun 21 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
解决pyttsx3无法封装的问题
Dec 24 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
python 字典和列表嵌套用法详解
Jun 29 Python
python中from module import * 的一个坑
Jul 20 #Python
用python代码做configure文件
Jul 20 #Python
python中的内置函数getattr()介绍及示例
Jul 20 #Python
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 #Python
Python中使用 Selenium 实现网页截图实例
Jul 18 #Python
Python中使用PyHook监听鼠标和键盘事件实例
Jul 18 #Python
python中使用pyhook实现键盘监控的例子
Jul 18 #Python
You might like
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
Python Flask基础教程示例代码
2018/02/07 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
python实现比较文件内容异同
2018/06/22 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
《红军不怕远征难》教学反思
2014/04/14 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
三严三实学习心得体会
2014/10/13 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
大学生见习报告范文
2014/11/03 职场文书
应聘教师求职信范文
2015/03/20 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
教你如何用cmd快速登录服务器
2022/06/10 Servers