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基于右递归解决八皇后问题的方法
May 25 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
python字符串的拼接方法总结
Nov 18 Python
简述 Python 的类和对象
Aug 21 Python
Python中全局变量和局部变量的理解与区别
Feb 07 Python
Python绘制散乱的点构成的图的方法
Apr 21 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 EOT定界符的使用详解
2008/09/30 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
Python如何读取文件中图片格式
2020/01/13 Python
python 5个顶级异步框架推荐
2020/09/09 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
Shell如何接收变量输入
2012/09/24 面试题
劳资员岗位职责
2013/11/11 职场文书
情况说明书格式范文
2014/05/06 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
vue实现简易音乐播放器
2022/08/14 Vue.js