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创建声明性迷你语言的教程
Apr 13 Python
python实现Decorator模式实例代码
Feb 09 Python
python网络爬虫学习笔记(1)
Apr 09 Python
Python利用递归实现文件的复制方法
Oct 27 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
python Kmeans算法原理深入解析
Aug 23 Python
Pytorch to(device)用法
Jan 08 Python
Python3 读取Word文件方式
Feb 13 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
python实现学生管理系统开发
Jul 24 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
使用tensorflow实现线性svm
2018/09/07 Python
详解python中的Turtle函数库
2018/11/19 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
Joules美国官网:出色的英国风格
2017/10/30 全球购物
初二生物教学反思
2014/02/03 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
实验心得体会
2014/09/05 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
出生公证书
2015/01/23 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android