七周七语言:Prolog Day 3

七周七语言之Prolog代码学习(声明式编程语言) # 若一个词以小写字母开头,它就是一个原子(atom);若以大写字母或下划线开头,那么它就是一个变量。变量的值可以改变,但原子不可以。 #找朋友 likes(wallace, cheese). # 事实 likes(grommit, cheese). # 事实 likes(wendolene, sheep). # 事实 friend(X,Y) :- \+(X = Y), likes( 阅读详情

第三天

Prolog真是一位解题高手,Sudoku是我非常喜欢的一个游戏,Programming Logically!

不过对于不熟悉Prolog谓词的而言,又成了一个比较头疼所事,如果不告诉我可以用fd_all_difference来判断一个列表中元素没有重复值,真的不会想到用“谓词”。
其实觉得用Prolog来解决一下AI问题是很有用的,比如做一个棋类游戏的AI,告诉Prolog规则,恐怕就能将我击败:-|

先找了一下Prolog的输出谓词:

   geto(X) 如 X与输入流中的下一个字符匹配,则目标成功。
    get(X) 如 X与输入流中的下一个打印字符匹配,则目标成功
   skip(X) 读入并跳过当前输入流中的字符,直到找到一个可与X匹配的字符
   read(X) 读入当前输入流的下一个项,并使之与X匹配
    put(X) 把整数X输出到当前输出流(X必须例化)
        nl  对当前输出流输出控制符"回车换行"
    tab(X) 输出X个空格符到当前输出流(X必须例化)
  write(X) 把项X输出到当前输出流
display(X) 与write(X)相似,只是它忽略运算符说明,以结构形式输出项
 op(X,Y,Z) 说明名为Z的运算符,其优先级为X,结合规则为Y

  • 修改数独解决器来解决6*6数独和9*9数独问题

    6*6 和 9*9 其实都一样,不过修改下Puzzle的构造

    valid([]).
    valid([Head|Tail]) :-
       fd_all_different(Head),
       valid(Tail).
    
    sudoku(Puzzle, Solution) :-
       Solution = Puzzle,
       Puzzle = [S11, S12, S13, S14, S15, S16,
                 S21, S22, S23, S24, S25, S26,
                 S31, S32, S33, S34, S35, S36,
                 S41, S42, S43, S44, S45, S46,
                 S51, S52, S53, S54, S55, S56,
                 S61, S62, S63, S64, S65, S66],
       fd_domain(Puzzle, 1, 6),
       
       Row1 = [S11, S12, S13, S14, S15, S16],
       Row2 = [S21, S22, S23, S24, S25, S26],
       Row3 = [S31, S32, S33, S34, S35, S36],
       Row4 = [S41, S42, S43, S44, S45, S46],
       Row5 = [S51, S52, S53, S54, S55, S56],
       Row6 = [S61, S62, S63, S64, S65, S66],
    
       Col1 = [S11, S21, S31, S41, S51, S61],
       Col2 = [S12, S22, S32, S42, S52, S62],
       Col3 = [S13, S23, S33, S43, S53, S63],
       Col4 = [S14, S24, S34, S44, S54, S64],
       Col5 = [S15, S25, S35, S45, S55, S65],
       Col6 = [S16, S26, S36, S46, S56, S66],
    
       Square1 = [S11, S12, S13, S21, S22, S23],
       Square2 = [S14, S15, S16, S24, S25, S26],
       Square3 = [S31, S32, S33, S41, S42, S43],
       Square4 = [S34, S35, S36, S44, S45, S46],
       Square5 = [S51, S52, S53, S61, S62, S63],
       Square6 = [S54, S55, S56, S64, S65, S66],
    
       valid([Row1, Row2, Row3, Row4, Row5, Row6,
             Col1, Col2, Col3, Col4, Col5, Col6,
             Square1, Square2, Square3, Square4, Square5, Square6]).
    		
  • 让数独解决器输出格式更美观的解决方法

    这其实无非在每一行结束的时候换行- -
    可以选择在Sudoku规则中放一个输出每一行的谓词序列,不过不清楚Prolog在“回答”的时候是如何格式化的:-(
    在文件中加入以下代码即可“格式化”地输出解题的结果。

    write('\n'), write(Row1),
    write('\n'), write(Row2),
    write('\n'), write(Row4),		  
    ...
    		
  • 采用一个皇后列表的方式解决八皇后问题。使用一个1~8范围内的数字代表每个皇后,而不是元组。通过皇后在列表中的位置获取其行号并且通过其在列表中的值获得其列号。

    其实书中的‘optimized_queens’就是可以用1~8来代表皇后的,因为每一行肯定有一个皇后,所以可以用行号或者列号来代表皇后。

七周七语言:Prolog Day 1 第一天 看到‘地图着色’那个例子的时候觉得prolog这下牛逼了……的确,只要通过描述的事实,就能将其填色 :) 这里介绍一下怎么用prolog来解地图填色问题: 在prolog中,只需要描述颜色的种类、以及各个区域的接壤问题即可。 different(red, green). different(red, blue). different(green, red). diffe 阅读详情

相关推荐

试用Orange进行数据挖掘:Classification

环境 -------------------------------------------------------- Kubuntu 12.04/Python 2.7.3/Orange 2.0b   准备工作 -------------------------------------------------------- #1.下载Orange的源码和Numpy的源码 #2.编译Num

fanTasy 2247

湖南大学人工智能实验二:Prolog编程求解图搜索问题

说在前面:这个实验我也是抄的 真的有人会写prolog嘛? 代码链接:人工智能实验 文章目录人工智能实验二:Prolog编程求解图搜索问题一.实验目的二.实验的硬件、软件平台三.实验内容及步骤四.实验报告要求五.实验步骤通过PROLOG的基本编程练习,说明实验的方法和步骤针对图搜索要求,说明求解的问题与程序、程序分析、注释、运行结果等,在讨论与结论部分说明实验收获、难点重点讨论等求解的问题程序程序分析及注释运行结果实验收获实验源代码 人工智能实验二:Prolog编程求解图搜索问题 一.实验目的 熟悉.

Moyu-42的博客 1625

prolog实现简单的数独游戏

用编译器swi - prolog编写的数独小例子,包含递归,内部谓词等操作。数独游戏是4*4的,但是代码很明确,可以很容易的进行修改成9*9的,切记在swi - prolog下执行

Prolog学习:基本概念

上一篇对Prolog有了一个感性的认识,今天介绍下Prolog中一些基本概念,想要用Prolog解决一些实际问题之前必须要先了解它们。这些概念在《七周七语言》这本书中都有介绍,我简单提炼汇总下,就当给这门小众语言做个宣传吧。 变量/规则/知识库 在Prolog中变量的命名是有特殊要求的,如果一个词以小写字母开头,它就是一个原子(atom),类似于其他语言中的符号(symbol),如果一个词以大...

weixin_33971205的博客 1155

IAR9.4报错之编码方式

IAR9.40编码方式错误导致的报错

qq_36081075的博客 2626

人大金仓数据库Kingbase FlySync同步程序安装

Kingbase FlySync同步程序(以下简称 KFS)是面向异地容灾、数据集中共享的场景推出的具备在异构数据平台间实现实时、增量数据同步的工具类产品,主要采用了物理日志解析技术,帮助用户解决不同数据平台的数据间可实现任意方向实时移动流转的问题,并保证此过程中数据不丢失,状态可监控,流转数据量可统计。KFS 需要安装的主要组件有 2 个,分别是后端同步程序和管理控制平台,另外KFS的部署方式也有2种,为分离部署何集中部署•集中部署:KFS与数据库部署在同一机器上。

weixin_44312518的博客 1179

七周七语言:Prolog Day 2

发现了一个有趣的事,在用我的vim编辑Prolog程序的时候, 是默认将其用Perl的高亮进行处理的。(UPDATE: 发现.pl的确是unix/perl的后缀,.pro才是正确的prolog程序后缀名) 做 翻转一个列表中的元素次序 由于Head表示的就是列表中的第一个元素,而Tail表示的列表中剩余的几个元素,那么要翻转列表中的元素次序,就先将Head取出并将其放入翻转...

SUMR_2014的博客 267

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

七周七语言:Erlang Day 1

相比之前的几门语言,对于Erlang来说更有一种“久闻Erlang大名,今日终得一见”的感觉。刚知道Erlang原来是是Ercisson Language的缩写。 这一天其实没有介绍很多,很多内容(HW中的)都需要从doc或者Google找到;当然,还没有接触到Erlang的核心内容Concurrency呢。 Erlang官网:erl...

SUMR_2014的博客 225

ZYNQ新手必看:你的PS端DDR和QSPI配置真的对了吗?从原理到实操的避雷指南

本文深入解析ZYNQ PS端外设配置的关键要点,特别是DDR匹配和QSPI时钟优化的实战技巧。通过详细案例和配置清单,帮助开发者避免常见错误,确保系统稳定性和启动可靠性。适合ZYNQ新手和需要优化最小系统的开发者参考。

weixin_28675839的博客 445

骑砍Ⅱ霸主MOD开发(16)-FaceKey&BannerKey

摘要:本文介绍了FaceKey人物模型和BannerKey旗帜模型的生成流程。FaceKey通过序列化参数生成人物模型,包括头部(脸部、嘴、睫毛、眼睛)、眉毛、头发、身体和躯干等组件,每个部分通过特定标签和骨骼绑定实现。BannerKey则通过解析参数生成旗帜模型,包括模型、贴图和颜色等元素。两种模型都采用参数化设计和XML配置文件实现模型生成与定制。

骑砍战团&霸主MOD开发 2286

带您走进七周七语言的程序世界

编者按 这是一本2011年Jolt大奖图书,在本文中,截选了七门各不相同的语言的概况,这七门语言,无论教还是学,对我们而言都是一个宏伟目标。书中的代码足以深刻阐释每一门语言的精髓。这七门语言都有非常优秀的支持社区,这也是我选择它们的原因之一。本书为你铺就的学习途径...... 第一周:Ruby 有糖相伴好下药。——Mary Poppins 松本行弘(Yukihiro Matsumoto)大

图灵教育 2773

五、MT8168 音频驱动之SPEAKER

本章主要讲解MT8168平台的内部SPEAKER驱动配置。分为HP接法和LINE OUT接法。2.1.3 audio_custom_exp.h设置。2.1.4 mixer_paths.xml设置。2.2.3 mixer_paths.xml设置。2.1.2 ProjectConfig 设置。2.2.2 ProjectConfig 设置。2.2.1 deconfig设置。2.1.1 DTS设置。......

Joon2020的博客 1664

七周七语言:Ruby Day 2

第二天 找 Ruby用代码块和不用代码块读取文件的方法,用代码块有什么好处? 用代码块读取文件的方法: File.open("text.txt") do |f| puts f.gets end 不用代码块读取文件的方法: f = File.new("text.txt","r") puts f.gets f.close 使用代码块,是一种用来打开一个单独文件的方法,

fanTasy 1352

YOLOv8 模型进化全解析:百种创新模块集成方法与实战部署指南(附资料链接)

动态网络 | DeformableConv/DynamicHead| +2.8% || 轻量化卷积 | GhostConv/MobileConv | +1.2% || 多尺度融合 | AFPN/ASFF | +3.5% || 注意力机制 | CA/EMA/SimAM | +1.8-4.2% |

FJN110的博客 111

windows 配置 libxml2

路径:\libiconv-1.9.2-1-src.zip\src\libiconv\1.9.2\libiconv-1.9.2\include\。执行完后,在当前win32目录中会生成了一个bin.msvc目录,其中就有开发需要的libxml2.lib和libxml2.dll文件。将 libiconv.la 复制到 新建的 lib 目录,并将其改名为 iconv.lib。路径:libiconv-1.9.2-1-bin.zip\lib\。将如下的 iconv.h 复制到新建的 include 目录。

SHELLCODE_8BIT的博客 3886

七周七语言:Ruby Day 1

第一天 找 Ruby API 文档:http://ruby-doc.org/core-1.9.3/ Programming Ruby: The Pragmatic Programmer's Guide [TFH08]的免费在线版本:http://www.ruby-doc.org/docs/ProgrammingRuby/ 替换字符串某一部分的方法: 替换一次: "H

fanTasy 1319

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

七周七语言:Io Day 2

第二天 今天做这些花了几乎一个下午……主要原因是要查iolanguage.org上的文档,而且那个文档不知道为什么不能搜索 :( 这“一天”的内容,关于Io的控制语句、文件IO、错误处理、列表都有涉及。 个人比较喜欢的是Io的控制语句,写在一个()里,没有else,条件、语句都用一个comma隔开的感觉很不错; 有点不理解的是关于Io的消息机制和反射,虽然书上的例子举的比较清楚,可是还是

fanTasy 979

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

七周七语言:Io Day 1

关于Io programming language 起初看到Io这两个字母的时候,的确觉得比较奇怪,因为为世人所熟知的Io也即Input/output(还记得那门IO系统课……那神奇的汇编)。 关于Io的资料比较少,当然,Io有他风格简洁(btw, 字好小)的官网:iolanguage.org。 Io的源代码托管在Github上,star一下表示关注 : ) 另外有关Io的history以

fanTasy 732

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 七周七语言:Prolog Day 2
下一篇: 博客迁移
fanTasy_shAo
博客等级 码龄16年 7粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值