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利用elaphe制作二维条形码实现代码
May 25 Python
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
跟老齐学Python之有容乃大的list(1)
Sep 14 Python
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
python 实现倒排索引的方法
Dec 25 Python
Python列表对象实现原理详解
Jul 01 Python
python通过http下载文件的方法详解
Jul 26 Python
django中瀑布流写法实例代码
Oct 14 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生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
python开发游戏的前期准备
2019/05/05 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
基于python实现坦克大战游戏
2020/10/27 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
关键字final的用法
2013/10/02 面试题
医学生实习自我鉴定
2013/09/27 职场文书
高级销售员求职信
2013/10/25 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
2015年库房工作总结
2015/04/30 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
新教师教学工作总结
2015/08/14 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书