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中装饰器高级用法详解
Dec 25 Python
Python全排列操作实例分析
Jul 24 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
python实现烟花小程序
Jan 30 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
Python跳出多重循环的方法示例
Jul 03 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
python双向链表原理与实现方法详解
Dec 03 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
Python Matplotlib绘制动画的代码详解
May 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
PHP的面试题集
2006/11/19 PHP
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python实现类的静态变量用法实例
2015/05/08 Python
简单实现Python爬取网络图片
2018/04/01 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
python3获取当前目录的实现方法
2019/07/29 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
python常用运维脚本实例小结
2020/02/14 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
应届生会计电算化求职信
2013/10/03 职场文书
汽车工程专业应届生求职信
2013/10/19 职场文书
电工工作职责范本
2014/02/22 职场文书
员工生日会策划方案
2014/06/14 职场文书
上诉状格式
2015/05/23 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript