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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
python类继承用法实例分析
Oct 10 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
python基础之入门必看操作
Jul 26 Python
python中hashlib模块用法示例
Oct 30 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python3 中文文件读写方法
Jan 23 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python getopt模块使用实例解析
Dec 18 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
详解python的异常捕获
Mar 03 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
Python自动登录126邮箱的方法
2015/07/10 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python3.x实现base64加密和解密
2019/03/28 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python小白垃圾回收机制入门
2020/06/09 Python
python如何调用java类
2020/07/05 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
django使用多个数据库的方法实例
2021/03/04 Python
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
Linux如何压缩可执行文件
2013/10/21 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
乡下人家教学反思
2014/02/01 职场文书
村委会贫困证明范本
2014/09/17 职场文书
初三英语教学反思
2016/02/15 职场文书