为什么我在序言中找不到斑马谜题的答案?

2023-12-20

这是我目前的代码,我正在尝试解决斑马拼图 http://en.wikipedia.org/wiki/Zebra_Puzzle.

exists(A,(A,_,_,_,_)).
exists(A,(_,A,_,_,_)).
exists(A,(_,_,A,_,_)).
exists(A,(_,_,_,A,_)).
exists(A,(_,_,_,_,A)).

rightOf(A,B,(B,A,_,_,_)).
rightOf(A,B,(_,B,A,_,_)).
rightOf(A,B,(_,_,B,A,_)).
rightOf(A,B,(_,_,_,B,A)).

middleHouse(A,(_,_,A,_,_)).

firstHouse(A,(A,_,_,_,_)).

nextTo(A,B,(B,A,_,_,_)).
nextTo(A,B,(_,B,A,_,_)).
nextTo(A,B,(_,_,B,A,_)).
nextTo(A,B,(_,_,_,B,A)).
nextTo(A,B,(A,B,_,_,_)).
nextTo(A,B,(_,A,B,_,_)).
nextTo(A,B,(_,_,A,B,_)).
nextTo(A,B,(_,_,_,A,B)).

:- Houses = (house(N1,P1,S1,D1,C1),house(N2,P2,S2,D2,C2),house(N3,P3,S3,D3,C3),house(N4,P4,S4,D4,C4),house(N5,P5,S5,D5,C5)),
exists(house(english,_,_,_,red),Houses),
exists(house(spainish,dog,_,_,_),Houses),
exists(house(_,_,_,coffee,green),Houses),
exists(house(ukrainian,_,_,tea,_),Houses),
rightOf(house(_,_,_,_,green),house(_,_,_,_,ivory),Houses),
exists(house(_,dog,oldgold,_,_),Houses),
exists(house(_,_,kools,_,yellow),Houses),
middleHouse(house(_,_,_,milk,_),Houses),
firstHouse(house(norwegian,_,_,_,_),Houses),
nextTo(house(_,_,chesterfields,_,_),house(_,fox,_,_,_),Houses),
nextTo(house(_,_,kools,_,_),house(_,horse,_,_,_),Houses),
exists(house(_,_,luckystike,orangejuice,_),Houses),
exists(house(japanise,_,parliments,_,_),Houses),
nextTo(house(norwegian,_,_,_,_),house(_,_,_,_,blue),Houses),
exists(house(WaterDrinker,_,_,water,_),Houses),
exists(house(ZebraOwner,zebra,_,_,_),Houses).

我已经输入了此内容并将其保存为 zebra.pl,我打开它并在 SWI-prolog 中输入 [zebra],它返回一条有关 N1、P1、C1 等的单例使用的警告消息。并返回 true,然后我要求它使用 print(WaterDrinker) 打印饮水器,它返回 _G317 和 true,

为什么它这样做而不返回可能是挪威语的答案,如果我要求它返回任何变量(如 C3 或 ZebraOwner),它会做同样的事情


主要问题是你不能写出这样的目标:- Houses = ...在你的程序中间。相反,你应该写一些类似的东西

solution(WaterDrinker, ZebraOwner) :-
    Houses = ...

然后在程序加载后输入

 solution(W, Z).

at the -?提示计算解决方案。

您也没有指定所有值都应该不同。如果这样做,您将再次使用这些变量,并且警告将会消失。

如果您确实只需要一次变量,则可以在其前面添加下划线以使警告消失。或者您可以只使用下划线,就像您已经做过很多次一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我在序言中找不到斑马谜题的答案? 的相关文章

  • 在 Prolog 中表达“交换性”的替代方案?

    作为一个Prolog的初学者 我发现Prolog中的交换表达式非常不直观 例如 如果我想表达 X 和 Y 属于一个家庭 例如 family X Y married X Y relative X Y father son X Y 我还应该在定
  • YAP Prolog 中的正向链接?

    我需要在某些 Prolog 问题中使用前向链接器 我想避免使用普通元解释器从头开始实现它 但如果没有其他选项可用 这就是我必须要做的 因为使用元解释器执行此操作会很慢 而且我我确信应该有一些好的实现 有人知道 YAP 或 SWI Prolo
  • 如何实现 not_all_equal/1 谓词

    如何实施not all equal 1谓词 如果给定列表包含至少 2 个不同的元素 则该谓词成功 否则失败 这是我的尝试 不是很纯粹的尝试 not all equal L member H1 L member H2 L H1 H2 gt t
  • 为什么在具体化中将 clpfd 变量分配给实际值?

    我正在开发一个 SWI Prolog 程序 该程序使用 CLP FD 约束来找到特定问题的解决方案 为此 我碰巧需要两个列表的 未定位 重叠 那是 List La长度为A List Lb长度为 B A gt B 未定位的重叠列表是La Lb
  • 如何在 Prolog 中计算数字序列的和

    任务是计算从0到M的自然数之和 我使用SWI Prolog编写了以下代码 my sum From To From gt To my sum From To S From 0 Next is 1 S is 1 my sum Next To S
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • 问题 - 序言中的形式语言

    我正在尝试构建一个 DCG 它可以识别与此形式匹配的所有列表 a n b 2m c 2m d n 我写下了以下规则 s gt s gt ad ad gt a ad d ad gt bc bc gt b b bc c c bc gt a gt
  • 以系统的方式报告 Prolog 中查询失败的“原因”

    我正在 Prolog 中寻找一种方法 模式或内置功能 我可以用它来返回why一组谓词失败 至少就数据库中的谓词而言 当用户在系统中提出查询时 我试图能够说的不仅仅是 那是错误的 例如 假设我有两个谓词 blue 1如果某物是蓝色的 则为真
  • 如何找到排列的索引

    index List Idx Predicate will get List with permutation and I want to know index of permutation For example index 4 1 3
  • Same_length/2 更好的纯版本

    鉴于频繁的纯定义same length 2 as same length same length As Bs same length As Bs same length L L loops 是否有一个纯粹的定义不会在这种情况下循环 类似于纯
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用append 3谓词 到目前为止 我已经完成了下面的操作 如果它是真的 它就有效 否则我得不到答案 就像它永远运行一样 adjacent X Y L append L1 X Y T1 appen
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p
  • 将 SWI Prolog 代码编译为 Windows 可执行文件 - 解析器 Grails3 项目

    我正在尝试构建解析器 Grails3 项目https github com RichardMoot Grail https github com RichardMoot Grail谁的教程是http www labri fr perso m
  • 高阶“解决方案”谓词

    我正在使用一个更高阶的 Prolog 变体 它缺少findall 还有一个关于实现我们自己的问题findall here 获取 Prolog 中的解决方案列表 https stackoverflow com questions 419103
  • 如何验证涉及 diff/2 约束的交换性?

    围绕 diff 2 约束有很多炒作 特别是作为对 2 和 2 的某些非声明性的救援 这种非声明性通常被描述为非单调性 并给出了非交换性的例子 但是测试涉及 diff 2 的测试用例是否可交换的方法是什么 这是我想要做的元解释 我做了交换性测
  • Prolog - 通过演绎减少知识库

    我需要创建一个规则来搜索与 my rule 匹配的事实 这些事实将用于改变知识库 my rule Conclusion Premise 我有这个知识库可以开始 dynamic is 2 is m1 house is m1 thing is
  • 这个版本的trace有什么问题?

    我有这个跟踪元解释器 它是为 swi prolog 编写的 trace Goal trace Goal 0 trace true Depth true trace fail Depth fail trace A gt B Depth A g
  • 查找列表中的最大值 - Prolog

    我刚刚接触 Prolog 并尝试编写一个谓词来查找整数列表的最大值 我需要写一个从头开始比较的内容 另一个从最后开始比较的内容 到目前为止 我有 max2 R max2 X Xs R X gt R max2 Xs X max2 X Xs R
  • 下面代码中的修剪选择点如何使其更加高效(Prolog)?

    在下面给出的代码中 有 cut 修剪选择点以提高效率 我非常确定reverse谓词和agent do moves谓词是必不可少的 solve task Task Cost agent current position oscar P sol

随机推荐

  • 如何在 AngularJS 部分中保留新行?

    在 AngularJS 部分中 我循环访问条目列表 如下所示 ul class entries li strong entry title strong p entry content p li ul 内容为 entry content 有
  • 如何使用 bash 复制每行中的字符串?

    我有一个文本文件 每一行都包含字符串 如下所示 abc dog zebra 我想让它像 abc abc dog dog zebra zebra 在 bash 中如何最好地做到这一点 你可以打电话sed sed r s 1 1 dupcol
  • 在命令行上使用 Firefox 截取整页屏幕截图

    我在 VPS 中的 Xvfb 上运行 Firefox 我想做的是对页面进行全屏截图 我可以使用以下命令将 Firefox 重定向到特定页面 firefox http google com 并使用 ImageMagick 截取屏幕截图 X 内
  • 如何调试为什么最简单的 MySQL 查询返回 false?

    我和 xampp 一起工作 我执行MySQL连接 connection mysql connect host user passw mysql select db db connection 我收到了 echo 命令的输出 通过检查布尔返回
  • Miniprofiler.Current 方法不返回时间

    我正在尝试使用此代码来获得时间MiniProfiler var profiler StackExchange Profiling MiniProfiler Current 但它返回0 ms结果 如何获得current time在迷你分析器中
  • 如何搜索 Perforce 仓库 (P4V) 中的文件内容?

    我目前使用 Perforce 版本 2010 2 该版本似乎没有集成的搜索功能来遍历每个文件的内容 我当前的 P4V 版本仅允许我搜索文件名 但不能搜索内容 对此的任何意见将不胜感激 先感谢您 我相信 尝试 2010 1 版本中添加的 p4
  • 尾部斜杠和首字母 www

    我有这个 htaccess RewriteEngine On redirect with www RewriteCond HTTP HOST mydomain NC RewriteRule http www HTTP HOST 1 R 30
  • 在 MySQL 中,为什么在使用未提交读时从 select 设置变量会获取锁?

    我们在 MySQL 中有一个使用 InnoDB 的表 并且我们使用未提交读的事务隔离级别 为什么设置 x如图所示获取锁 mysql gt set x select userID from users limit 1 Query OK 0 r
  • 如何使用GetFileVersionInfo函数?

    我有这段代码 返回文件版本 到结构中 我使用 shell32 dll 作为示例 但有一些值我不理解它们的含义 并且希望得到解释 这是代码 void GetFileVersion PCHAR pFilePath PVERSION pRetVe
  • Maven Profile - 根据打包激活配置文件

    我有一个 POM 它声明了我的项目中常见的 Web 应用程序内容 我使用它作为所有 Web 应用程序的父级 是否可以仅在包装战争时激活配置文件 我尝试过属性方法 但这不起作用 因为它不是系统 环境属性 由于构建失败 我可以在安装 POM 时
  • Android Espresso - 如何检查 EditText 提示?

    我开始使用 Espresso 运行我的基本测试 现在想弄清楚如何检查我的编辑文本是否具有特定的提示文本 谢谢 onView withId R id locationInput check matches Since 浓缩咖啡2 0 http
  • 从不同数据库映射 Doctrine 中的实体时会抛出 ReflectionException

    我正在尝试在 ZF2 应用程序中使用 Doctrine 2 该应用程序包含两个模块 每个模块都有自己的数据库 我需要使用跨数据库联接 以便可以将一个模块中的实体与另一个模块中的实体关联起来 这是一个 UML 图 http yuml me 5
  • 如何将网站上的文件保存到SD卡

    有谁知道如何通过wifi将文件从网络服务器 本地主机 保存到SD卡 我正在对我的应用程序进行 xml 解析 为此我必须从 localhost 下载 xml 文件到 sdcard 然后标记解析 我一直在将 xml 文件下载到 SD 卡上 请指
  • 使用 xor reg, reg 是否比 mov reg, 0 有优势? [复制]

    这个问题在这里已经有答案了 在 x86 上有两种众所周知的方法将整数寄存器设置为零值 Either mov reg 0 or xor reg reg 有人认为第二种变体更好 因为值 0 没有存储在代码中 并且可以节省生成的机器代码的几个字节
  • mysql中行到列的转换

    下面是我的表结构 我想将其转换为另一种格式 从行到列类型 我已经尝试了很多 但我无法这样做 StudentID Mark Subject 10 46 Java 10 65 C 10 79 JavaScript 11 66 Java 11 8
  • PostgreSQL 中的 JSON 外键

    是否可以将外键分配给 PostgreSQL 中的 json 属性 这是我想要实现的示例 但它不起作用 CREATE TABLE Users Id int NOT NULL PRIMARY KEY CREATE TABLE Data Id i
  • %运行另一个笔记本时 Jupyter 中出现编码错误

    我在 Jupyter 笔记本中使用西里尔字母符号 在 NoteBook 1 中 我运行 NoteBook 2 run NB2 ipynb 在 NoteBook 2 中 我写入了一些 txt 文件 TestText open C TRASH
  • Dart 中的动态和对象有什么区别?

    它们看起来都可以在相同的情况下使用 类型检查等方面是否有不同的表示或不同的微妙之处 编辑以更新空安全 使用Object 代替Object 另一种观点dynamic它并不是真正的类型 它是一种关闭类型检查并告诉静态类型系统 相信我 我知道我在
  • Django 如何在更新用户时发送 post_save 信号?

    阅读文档后 https docs djangoproject com en dev topics signals https docs djangoproject com en dev topics signals 我在我的 signal
  • 为什么我在序言中找不到斑马谜题的答案?

    这是我目前的代码 我正在尝试解决斑马拼图 http en wikipedia org wiki Zebra Puzzle exists A A exists A A exists A A exists A A exists A A righ