问题标签 [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.

0 投票
2 回答
85 浏览

list - 有没有办法使用 write/1 来编写 length/1 谓词来打印结果?

我有一个学校的分配,最近开始学习Prolog。
这是练习(非常简单):

在 Prolog 中编写一个程序来查找给定列表的长度。例如, length([a, b, c, d, e]).应该打印 5

我真的不知道如何length/1为我创建一个谓词。这是我的代码:

现在,我问我的老师如何把它变成length/1谓词,他告诉我要使用write/1谓词。我查找了write/1谓词,但我不明白这将如何帮助我编写length/1谓词。任何提示/技巧来做到这一点?
需要明确的是,这是家庭作业。

0 投票
1 回答
96 浏览

prolog - Prolog,在开始执行时写一些东西

当用户执行它时,我想在终端上显示一个字符串。但是,我想在不调用任何谓词的情况下做到这一点。例如,如果代码是这样的:

只有当我明确调用该谓词时,它才会打印一些字符串。相反,当我们咨询我们的程序时,我希望视图是这样的:

我试过了,但没有用:

谢谢!

0 投票
1 回答
3156 浏览

prolog - 为什么 SWI-Prolog 只给我第一个答案?

我是 Prolog 的新手。我只是在尝试简单的例子来学习。我有.pl这些行的文件:

经过咨询和测试,它只显示第一个答案。例如:

难道不应该给出满足关系的所有组合parent吗?

有谁知道问题是什么?

0 投票
1 回答
58 浏览

prolog - 我正在努力将这三个规则联系在一起

我在将以下三个规则连接在一起时遇到问题。

countcombo 创建一个附加列表。membersofcombo,对该列表进行排序,然后生成原始附加列表的每个成员,计数规则然后计算每个成员的出现次数。

membersofcombo 和 count 一起工作,但我无法让 countcombo 连接到组合成员。

0 投票
3 回答
3323 浏览

prolog - 序言。在查询中,如何对结果中不想要的变量设置条件?

想象一下,我有以下知识库,它为每个人提供了他的名字和年龄。

现在,我想检索所有 20 岁以上的人。此外,我只想收集他们的名字而不是他们的年龄。在这里,我想检索maryjohn

通常如何在 Prolog 中,更具体地说在 SWI-Prolog 中执行此操作?

如果我们使用非匿名变量,例如:

Prolog 会给我XY我不想要的值Y

我不能使用匿名变量_,因为 Prolog 不能链接它的两个实例。以下给出了错误:

那么,如何做到这一点呢?

0 投票
1 回答
589 浏览

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)

0 投票
1 回答
1170 浏览

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.

0 投票
0 回答
73 浏览

prolog - 为什么emacs劣质eclipse只回溯两次?

例子:

0 投票
1 回答
14101 浏览

prolog - 查询返回真/假

我最近开始学习Prolog并遇到了一个问题。

以下内容已加载到Prolog

我正在写一个谓词,如果所有的人都喜欢 in 的水果,all_like(What, List)它应该返回。TrueListWhat

例如:

应该返回:

all_like(grapes,[john, bill]).

应该返回:

我有以下代码:

我的结果是:

第一个查询

第二次查询

有人知道我为什么会得到这些结果吗?

输出第二个布尔值有什么意义?

最后,.出现在一个空间之后有意义吗?

感谢您的帮助。

0 投票
2 回答
282 浏览

prolog - Prolog没有显示完整的答案列表

human(Who).当我对以下.pl文件运行查询时

我只回来Who = ann .

代替

我正在使用序言 6.6.6。如何让它显示完整列表?