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笔记(叁)继续学习
Oct 24 Python
Python 错误和异常小结
Oct 09 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
Python字符串查找基本操作代码案例
Oct 27 Python
用python读取xlsx文件
Dec 17 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
OpenCV-Python实现轮廓拟合
Jun 08 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版
2016/07/22 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
js中less常用的方法小结
2017/08/09 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
浅谈python3中input输入的使用
2019/08/02 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Python实现粒子群算法的示例
2021/02/14 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
应用服务器有那些
2012/01/19 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
银行员工辞职信范文
2014/01/20 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
python中数组和列表的简单实例
2022/03/25 Python
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP