逻辑编程填词游戏

逻辑编程

  • 接前面
  • 着色应用
    • 回溯倒水
    • 递归汉诺塔
      • 代码
      • 从hello world开始
  • 填词游戏
    • 题目
    • 答案
    • 验证
  • 后话

接前面

着色应用

让人眼前一亮。能不能解决其他冲突问题呢?

回溯倒水

也有冲突检测,一步一步试探。倒水逻辑跟着色很像。怎么写成逻辑编程代码呢?

递归汉诺塔

费尽心思,网上也没有找到办法,却有解决汉诺塔移动的代码。

代码

move(Start, End, Disk) :-
     write('从'),
     write(Start),    
     write('移动圆盘 '),
     write(Disk),    
     write('到 '),
     write(End),
     nl.

hanoi3(N) :-
    hanoi3(N, '塔座A', '塔座B', '塔座C').

hanoi3(1, A, _, C) :-
    move(A, C, 1).

hanoi3(N, A, B, C) :-
    M is N - 1,          %取出前n-1个盘子
    hanoi3(M, A, C, B),  %将A塔座的前n-1个盘子通过塔座移动到B塔座
    move(A, C, N),       %将A塔座的最大盘子移动到C塔座

hanoi3(M, B, A, C).  	%将B塔座的盘子通过A杆移动到C塔座

从hello world开始

我修改了一下打印,添加打印汉诺塔移动盘的过程。

?-hanoi3(3)
从塔座A移动圆盘 1到 塔座C
从塔座A移动圆盘 2到 塔座B
从塔座C移动圆盘 1到 塔座B
从塔座A移动圆盘 3到 塔座C
从塔座B移动圆盘 1到 塔座A
从塔座B移动圆盘 2到 塔座C
从塔座A移动圆盘 1到 塔座C
1true
Next      10       100     1,000     Stop

但是,比C或Python代码长太多了,这不是逻辑编程应该有的样子。看填词游戏解决得多好,还是顺着它的思路学习吧。

填词游戏

把astante , astoria , baratto , cobalto , pistola , statale六个法语单词,交叉填到三横三竖的格子里。用C或Python要很多代码。

题目

Exercise 2.4 Here are six Italian words:

astante , astoria , baratto , cobalto , pistola , statale .

They are to be arranged, crossword puzzle fashion, in the following grid:

在这里插入图片描述

The following knowledge base represents a lexicon containing these words:

word(astante, a,s,t,a,n,t,e).
word(astoria, a,s,t,o,r,i,a).
word(baratto, b,a,r,a,t,t,o).
word(cobalto, c,o,b,a,l,t,o).
word(pistola, p,i,s,t,o,l,a).
word(statale, s,t,a,t,a,l,e).
Write a predicate crossword/6 that tells us how to fill in the grid. The first three arguments should be the vertical words from left to right, and the last three arguments the horizontal words from top to bottom.

答案

w o r d ( V 1 , , H 1 V 1 , , H 2 V 1 , , H 3 V 1 , ) , word(V1,_,H1V1,_,H2V1,_,H3V1,_), word(V1,,H1V1,,H2V1,,H3V1,),大概意思:V1要真(存在),题干里六个word里的某一个;_忽略第一个字母;H1V1,H1V1都要包含的字母。

crossword(V1, V2, V3, H1, H2, H3) :-
word(V1,_,H1V1,_,H2V1,_,H3V1,_),
word(V2,_,H1V2,_,H2V2,_,H3V2,_),
word(V3,_,H1V3,_,H2V3,_,H3V3,_),
word(H1,_,H1V1,_,H1V2,_,H1V3,_),
word(H2,_,H2V1,_,H2V2,_,H2V3,_),
word(H3,_,H3V1,_,H3V2,_,H3V3,_),
    H1 \= V1, H2 \= V2, H3 \= V3.

验证

?-crossword(V1, V2, V3, H1, H2, H3).
H1 = astoria,
H2 = baratto,
H3 = statale,
V1 = astante,
V2 = cobalto,
V3 = pistola

也许只能这样一点一点的积累了。坦诚地表达,灵魂的拷问。

后话

like(Prolog).%喜欢逻辑编程 
like(Python).
hate(C).%不喜欢C语音
hard(Prolog). %好难学
hard(C).
good(Prolog). %但是个好语言
good(Python).
good(C).
not(P) :- P, !, fail ; true.
get(X):- %我能学会吗? 
    like(X),good(X),not(hate(x)).

?- get(C). %能搞定C语音吗? 
false
?- get(Python).
true
?- get(Prolog).
??????

我能学会逻辑编程吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AprilTag在相机标定中的应用简介

1. AprilTag简介 相机标定用的标靶类型多样,常见的形式有棋盘格标靶和圆形标靶。今天要介绍的AprilTag比较特别,它是一种编码形式的标靶。其官网为AprilTag,它是一套视觉基准系统,包含标靶编解码方法(Tag生成)和检测算法(Tag检测),可用于AR、机器人、相机标定等领域。…

Java项目实战II基于Spring Boot的秒杀系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在互联网电商蓬勃发展的今天&#xff0…

AI产品经理全攻略:策略制定、开发过程与商业化路径【AI产品经理必读书籍】

通过《AI产品经理手册》,将可以了解不同类型的AI,如何将AI整合到产品或业务中,以及支持创建AI产品或将AI集成到现有产品所需的基础设施。熟悉实践管理AI产品开发流程、评估和优化AI模型,以及应对与AI产品相关的复杂伦理和法律问题…

Efficient Cascaded Multiscale Adaptive Network for Image Restoration 论文阅读笔记

Efficient Cascaded Multiscale Adaptive Network for Image Restoration 论文阅读笔记 这是新国立和新加坡管理大学发表在ECCV2024上的一篇image restoration的文章,提出了一个新的网络结构ECMA,从实验结果上看在超分,去噪,去模糊…

Web服务器(理论)

目录 Web服务器www简介常见Web服务程序介绍:服务器主机主要数据浏览器 网址及HTTP简介URLhttp请求方法:2.3 HTTP协议请求的工作流程: www服务器的类型静态网站动态网站 快速安装Apache安装准备工作httpd所需目录主配置文件 nignx安装1、安装2、准备工作 …

钉钉平台开发小程序

一、下载小程序开发者工具 官网地址:小程序开发工具 - 钉钉开放平台 客户端类型 下载链接 MacOS x64 https://ur.alipay.com/volans-demo_MiniProgramStudio-x64.dmg MacOS arm64 https://ur.alipay.com/volans-demo_MiniProgramStudio-arm64.dmg Windows ht…

青春的海洋:海滨学院班级回忆录项目

3系统分析 3.1可行性分析 通过对本海滨学院班级回忆录实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本海滨学院班级回忆录采用SSM框架,JAVA作为开…

【Linux】IPC 进程间通信(一):管道(匿名管道命名管道)

✨ 无人扶我青云志,我自踏雪至山巅 🌏 📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 &#…

SpringBoot源码(四):run() 方法解析(一)

run()方法: public ConfigurableApplicationContext run(String... args) {// 记录应用启动时间long startTime System.nanoTime();DefaultBootstrapContext bootstrapContext createBootstrapContext();// 创建 ConfigurableApplicationContext 对象Configurabl…

FCP-报表开发工程师 考试内容

报表开发工程师考试内容 文章目录 报表开发工程师考试内容1. 报考说明2. 考试内容2.1 FineReport 产品能力 80%2.2 前端语言 10%2.3 SQL 编程语言 5%2.4 运维能力 5 % 3. 考试知识结构3.1 复杂报表开发 20% ~ 30%3.2 数据填报功能 10%3.3 决策报表 0%~10%3.4 层次坐标专题 0%~5…

Spring中的资源以及分类

Spring中的资源都被封装成 Resource 对象 以上是我测试代码的项目编译后的目录结构,target 所在的目录是 D:\\IdeaProjects\\study-spring\\ public void printStream(InputStream inputStream) throws IOException {Reader reader new InputStreamReader(input…

xtu oj 连接字符串

文章目录 回顾思路代码 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询,降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数(大数据)xtu oj 原根xtu oj 不定方程的正整数解xtu oj 最多的可变换字符串…

[Prometheus学习笔记]从架构到案例,一站式教程

文章目录 Prometheus 优势Prometheus 的组件、架构Prometheus Server 直接从监控目标中或者间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列或生成告警。可以通…

鸿蒙打包hvigorw clean报错No npmrc file is matched in the current user folder解决

问题 在执行hvigorw clean等命令时,报错如下: Error: The hvigor depends on the npmrc file. No npmrc file is matched in the current user folder. Configure the npmrc file first解决方案 在用户当前目录下新建.npmrc文件,并配置如下…

读数据工程之道:设计和构建健壮的数据系统27转换

1. 转换 1.1. 转换与查询不同 1.1.1. 查询是根据过滤和连接逻辑从各种来源检索数据 1.1.2. 转换将结果持久化,供其他转换或查询使用 1.1.2.1. 结果可以被短暂地或永久地保存 1.1.3. 除了持久性,转换区别于查询的另一个特点是复杂性 1.1.3.1. 你可能会建…

市场分化!汽车零部件「变天」

全球汽车市场的动荡不安,还在持续。 本周,全球TOP20汽车零部件公司—安波福(Aptiv)发布2024年第三季度财报显示,三季度公司经调整后确认收入同比下降6%;按照区域市场来看,也几乎是清一色的下滑景…

Java面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums) …

ONLYOFFICE 8.2版本桌面编辑器评测

目录 ONLYOFFICE 8.2版本桌面编辑器评测一、引言二、ONLYOFFICE 桌面编辑器概述2.1 功能特点2.2 系统支持2.3 数据表:ONLYOFFICE 桌面编辑器功能概述 三、ONLYOFFICE 协作空间3.1 协作功能3.2 部署和集成3.3 数据表:ONLYOFFICE 协作空间功能概述 四、ONL…

管道缺陷图像分割系统:入门训练营

管道缺陷图像分割系统源码&数据集分享 [yolov8-seg-vanillanet&yolov8-seg-C2f-DiverseBranchBlock等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源…

【文件处理】二、批处理(.bat) - 批量修改文件拓展名

一、简介 批处理(Batch Processing)是一种广泛应用于Dos和Windows系统种的脚本语言;它允许用户将一些列名称或程序组合在一起,形成可一次性执行的批处理文件。批处理文件的拓展名通常为".bat"、“.cmd”、".btm&q…