问题标签 [prolog-dif]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
list - 在序言的列表中删除该值和该值的所有重复项
我在从序言中的列表中删除值时遇到了一些麻烦。我有一个颜色列表,我想向其中添加一个颜色列表,并保留所有没有重复的值并删除其余的值。
所以紫色在这个列表中出现了两次,我想删除它们。这是我想要返回的列表。
我目前有这个来删除所有重复的,但我不能把两个紫色都去掉。
这是我现在得到的结果:
list - 从列表中删除重复项,同时保留最右边的出现
我试图从列表中删除重复项,同时保留最右边的出现。例如:[1,2,3,1,2]
转换为[3,1,2]
这是我在 Prolog 中的第一次尝试,我不明白我做错了什么。它总是返回假。这是我的代码:
prolog - 如何正确表达序言中的不等式?
TL;DR: sibling(a,X)
答案成功X = a
,但sibling(a,a)
失败。
我有以下 Prolog 文件:
对我来说似乎很清楚,如果他们的父母相同,两个人就是兄弟姐妹。此外,一个人不是他们自己的兄弟姐妹。
但是当我尝试在 GNU Prolog 上运行一些查询时,我得到了一些奇怪的结果:
这是预期的行为。a
并且b
是兄弟姐妹。有三个结果,这有点奇怪,但我假设 Prolog 是绑定的A = c, B = d
,并且A = d, B = c
.
我认为这意味着a
并且a
不是兄弟姐妹。
这就是我卡住的地方:它说X = a
,这意味着sibling(a,a)
是真的,但在前面的查询中sibling(a,a)
失败了!
我觉得我不了解\==
Prolog 中的实际作用。
发生了什么,我该如何解决?
list - Splitting list in prolog based on condition
I have a list
My objective is to split it into
the predicate i have implemented so far
Sorry for the noob question learning prolog.
prolog - Prolog 规则中目标(语句)的顺序
我最近开始研究 Prolog,遇到了一个奇怪的问题。在这里,您可以看到一个代码示例(我使用SWI-Prolog 7.2.3),它给出了关系树和我对 2 个任务的解决方案。
当我想找到戴夫的亲戚时,我会:
然后我改变了我对下一个相对的定义:
我只是在最后一个语句中更改了目标的顺序。现在我有以下输出:
我在输出中看到了戴夫!这怎么发生的?我写了 X \== Y... 谁能给我一个很好的解释?
还有一个问题。如何让我的程序不写相同的答案?
谢谢!
list - Prolog - 检查出现次数未按预期工作
在 Prolog 中:我有以下函数来计算列表中某个元素的出现次数:
我测试了它,它运行良好。但是问题来了,我有另一个函数必须检查“1”在列表中出现的次数是否少于 2 次。
例如,每当我尝试检查列表[1,1,1,1]
时,我得到的结果都是“真”,这是错误的,我不知道为什么。我试图进行一些更改,但该功能不起作用。
list - 填充仅出现一次的多个列表元素的列表
我是 Prolog 的新手,我正在努力理解它。
我从一些简单的程序开始,这个程序应该:
- 检查一个元素是否包含在列表的其余部分中
- 如果 FALSE 什么都不做
- 如果 TRUE 将其添加到第二个列表。(只有一次出现的 char 应该添加到第二个列表中)。
一些具有预期结果的示例:
这是我写的代码,但我有一些问题(它总是返回true
)。
我尝试使用调试器,发现not(member(X,Y))
is alwaysfalse
并且在绑定部分只有X
andXs
和 never Y
。非常感谢任何建议!谢谢你。
更新
我想我解决了,代码如下:
但我不太确定为什么它现在可以工作......在第 3 次occ
我改变了_Y
with []
.. 但为什么它会改变结果?
list - Prolog not_member 不做它的工作
我在这里有一个 Prolog 问题,我试图将独特的机场加入列表,但我的谓词没有按预期工作。
具有预期答案的示例查询:
如果您需要事实让我知道,我们将不胜感激。谢谢!
prolog - 当两个人有相同的爱好时 Prolog 谓词返回 true
我想写一个 Prolog 谓词,当两个人有相同的爱好时返回 true,而不使用否定。我有以下数据库:
我想出了以下谓词:
X
然而,这个谓词在equals时也是正确的Y
,我不希望这样。谁能帮我找到解决方案?一个小的解释也将不胜感激。
prolog - 为什么这个 prolog 程序返回 false?
当我运行以下查询时,我没想到会失败(但还是得到了它)。
为什么我会看到这种行为?