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配置文件解析模块ConfigParser使用实例
Apr 13 Python
Python写的一个简单监控系统
Jun 19 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
python线程中同步锁详解
Apr 27 Python
python版大富翁源代码分享
Nov 19 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 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/07 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
js 分页全选或反选标识实现代码
2011/08/09 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
pandas删除指定行详解
2019/04/04 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python应用文件读取与登录注册功能
2019/09/23 Python
如何提高python 中for循环的效率
2020/04/15 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
营销专业应届生求职信
2013/11/26 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
谢师宴邀请函
2015/02/02 职场文书
Python find()、rfind()方法及作用
2022/12/24 Python