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深入06——python的内存管理详解
Dec 07 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python只用40行代码编写的计算器实例
May 10 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
Python List cmp()知识点总结
Feb 18 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
Python同时迭代多个序列的方法
Jul 28 Python
Python实现石头剪刀布游戏
Jan 20 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 Python
Python之基础函数案例详解
Aug 30 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
晶体管单管来复再生式收音机
2021/03/02 无线电
MYSQL数据库初学者使用指南
2006/11/16 PHP
什么是MVC,好东西啊
2007/05/03 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
php中的观察者模式简单实例
2015/01/20 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
js实现秒表计时器
2019/12/16 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python3实现定时任务的四种方式
2019/06/03 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
QML实现钟表效果
2020/06/02 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
集团公司人力资源部岗位职责
2014/01/03 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技