问题标签 [prolog-toplevel]
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 - 有没有办法使用 write/1 来编写 length/1 谓词来打印结果?
我有一个学校的分配,最近开始学习Prolog。
这是练习(非常简单):
在 Prolog 中编写一个程序来查找给定列表的长度。例如,
length([a, b, c, d, e]).
应该打印 5
我真的不知道如何length/1
为我创建一个谓词。这是我的代码:
现在,我问我的老师如何把它变成length/1
谓词,他告诉我要使用write/1
谓词。我查找了write/1
谓词,但我不明白这将如何帮助我编写length/1
谓词。任何提示/技巧来做到这一点?
需要明确的是,这是家庭作业。
prolog - Prolog,在开始执行时写一些东西
当用户执行它时,我想在终端上显示一个字符串。但是,我想在不调用任何谓词的情况下做到这一点。例如,如果代码是这样的:
只有当我明确调用该谓词时,它才会打印一些字符串。相反,当我们咨询我们的程序时,我希望视图是这样的:
我试过了,但没有用:
谢谢!
prolog - 为什么 SWI-Prolog 只给我第一个答案?
我是 Prolog 的新手。我只是在尝试简单的例子来学习。我有.pl
这些行的文件:
经过咨询和测试,它只显示第一个答案。例如:
难道不应该给出满足关系的所有组合parent
吗?
有谁知道问题是什么?
prolog - 我正在努力将这三个规则联系在一起
我在将以下三个规则连接在一起时遇到问题。
countcombo 创建一个附加列表。membersofcombo,对该列表进行排序,然后生成原始附加列表的每个成员,计数规则然后计算每个成员的出现次数。
membersofcombo 和 count 一起工作,但我无法让 countcombo 连接到组合成员。
prolog - 序言。在查询中,如何对结果中不想要的变量设置条件?
想象一下,我有以下知识库,它为每个人提供了他的名字和年龄。
现在,我想检索所有 20 岁以上的人。此外,我只想收集他们的名字而不是他们的年龄。在这里,我想检索mary
和john
。
通常如何在 Prolog 中,更具体地说在 SWI-Prolog 中执行此操作?
如果我们使用非匿名变量,例如:
Prolog 会给我X
和Y
我不想要的值Y
。
我不能使用匿名变量_
,因为 Prolog 不能链接它的两个实例。以下给出了错误:
那么,如何做到这一点呢?
math - prolog in math - 在 prolog 中搜索节点的级别
假设这里是一棵二叉搜索树,并且给定 above(X,Y)
-X
直接在上面的规则Y
。我还创建了规则root(X)
-X
没有父级。
然后,我试图弄清楚这棵树中节点的深度。假设树的根节点是“r”所以我得到了 fact level(r,0)
。为了实施规则level(N,D) :-
,我想的是这里应该有一个递归。因此,我尝试了
所以如果N
不是根,X
上面有一个节点N
,层级D
加一,然后递归。但是当我测试这个时,它只适用于根条件。当我创建更多事实时,例如节点“s”是节点“r”的左子节点,我的查询是 level(s,D)。它返回我“不”。我跟踪了查询,它显示了我
我只是困惑为什么我打电话时它会失败 level(s,D)
?
syntax - How to automate semicolon in Prolog
I am learning about Prolog in class and was shown a way to automatically press the semicolon key until there are no more solutions. I have tried searching on Google but I get examples using findall
which is not what was shown. Are there any other ways to automatically press ;
in the Prolog shell?
For example, showing all the solutions without pressing ;
repeatedly.
prolog - 查询返回真/假
我最近开始学习Prolog
并遇到了一个问题。
以下内容已加载到Prolog
:
我正在写一个谓词,如果所有的人都喜欢 in 的水果,all_like(What, List)
它应该返回。True
List
What
例如:
应该返回:
all_like(grapes,[john, bill]).
应该返回:
我有以下代码:
我的结果是:
第一个查询
第二次查询
有人知道我为什么会得到这些结果吗?
输出第二个布尔值有什么意义?
最后,.
出现在一个空间之后有意义吗?
感谢您的帮助。
prolog - Prolog没有显示完整的答案列表
human(Who).
当我对以下.pl
文件运行查询时
我只回来Who = ann .
代替
我正在使用序言 6.6.6。如何让它显示完整列表?