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正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
Python中字符串的格式化方法小结
May 03 Python
python os用法总结
Jun 08 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Django uwsgi Nginx 的生产环境部署详解
Feb 02 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
PyTorch中permute的用法详解
Dec 30 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
python 实现汉诺塔游戏
Nov 28 Python
python自动化发送邮件实例讲解
Jan 04 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 魔术函数使用说明
2010/05/14 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
python函数装饰器用法实例详解
2015/06/04 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
大学生应聘推荐信范文
2013/11/19 职场文书
应届大学生的推荐信
2013/11/20 职场文书
《老山界》教学反思
2014/04/08 职场文书
红头文件任命书范本
2014/06/05 职场文书
委托书怎样写
2014/08/30 职场文书
营销学习心得体会
2014/09/12 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
超市员工管理制度
2015/08/06 职场文书
升学宴家长答谢词
2015/09/29 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
nginx安装以及配置的详细过程记录
2021/09/15 Servers