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 30 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
pycharm运行scrapy过程图解
Nov 22 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
什么是python的必选参数
Jun 21 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 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下载远程文件类(支持断点续传)
2008/11/14 PHP
php db类库进行数据库操作
2009/03/19 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
公司接待方案
2014/03/08 职场文书
国际商务专业求职信
2014/07/15 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
给上级领导的感谢信
2015/01/22 职场文书
2015年中个人总结范文
2015/03/10 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
城南旧事读书笔记
2015/06/29 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
php双向队列实例讲解
2021/11/17 PHP