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实现的希尔排序算法实例
Jul 01 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
Python实现的读写json文件功能示例
Jun 05 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
python检测IP地址变化并触发事件
Dec 26 Python
numpy基础教程之np.linalg
Feb 12 Python
python添加菜单图文讲解
Jun 04 Python
python通过移动端访问查看电脑界面
Jan 06 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 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查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
python服务器与android客户端socket通信实例
2014/11/12 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
使用python爬取B站千万级数据
2018/06/08 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
2016中考冲刺决心书
2015/09/22 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技