问题标签 [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 投票
1 回答
5343 浏览

list - 如何在 SWI-Prolog 中扩展结果列表?

如果我在长度谓词之后使用 write(L),则解释器会打印列表两次,一次展开,另一次不展开。

0 投票
1 回答
337 浏览

prolog - Prolog 列表中的两颗星

列表中的两颗星是什么?

我尝试搜索但没有成功。

0 投票
2 回答
34802 浏览

procedure - Prolog:制作打印 Hello World 的程序

我想将这个简单的东西加载到我的编辑器中:

这样它就会打印“hi”。

我该怎么办?

我目前正在尝试做File->New

并将名为 Write 的文件保存到E:\Program Files\pl\xpce\prolog\lib

进行查询时:

?-写。

它正在打印:

为什么?

0 投票
2 回答
12047 浏览

prolog - 为什么这个序言查询既真又假?

我的 SWI-Prolog 知识库包含以下两个事实:

现在,如果我提出查询

为什么 f(a,b) 既真又假?当知识库中有三个事实时,也会发生这种情况。如果我附加 f(a,d)。到 KB,则 f(a,d) 为真(仅),但 f(a,b) 和 f(a,c) 既为真又为假。发生了什么事,我该怎么做才能使 Prolog (仅)回答这些查询?

0 投票
2 回答
4159 浏览

prolog - 为一组规则获得“真;假”的两个答案

首先感谢您的帮助。我正在编写一个描述家庭关系的序言程序,包括所有版本的姻亲。逻辑就在那里,我需要帮助的是一些序言问题,因为我对它不是很有经验。我试图通过使用分号为每个规则设置多种可能性。

我对待公婆的方式是让我的姐夫也是我的兄弟,所以我需要多次检查才能确定哪个是真的。如果任何选项为真,我希望 prolog 返回真,并且只有真。但是,它返回 true 和 false 作为可能的选项,因为当然其中一个选项总是为假,而另一个总是为真。他们要么是我的姐夫,要么是我的亲兄弟。我不能让 prolog 只返回 true,并且不能选择 false 作为另一个答案。如果有人有任何建议,那就太好了。相关代码如下。所以,如果我输入“兄弟(婴儿,爸爸)”。当我想要的都是假的时候,我会得到正确和错误的答案。但是,“兄弟(爸爸,宝宝)”。只返回真。但我现在在胡说八道。抱歉,如果任何代码与婴儿爸爸的东西混淆。谢谢!

0 投票
1 回答
185 浏览

prolog - (swi)序言的不太像寻呼机

unix 中的典型工作流程是使用过滤器管道,最后使用诸如 less 之类的寻呼机。例如(省略参数)

现在,swi-prolog 命令行中的典型工作流程之一是要求它为给定的连词提供一组解决方案,例如

它很容易给我一套解决方案。这可能比终端窗口长得多。或单个查询

可以再次给出一个很长的列表,不适合屏幕。因此,我经常发现自己处于想|less在排队结束时打耳光的情况。

我正在寻找的是一种在寻呼机中打开一组解决方案或只是一个大术语的工具。类似于:

或者

0 投票
4 回答
5494 浏览

prolog - 如何在 Prolog 中同时返回变量结果和真/假?

听起来很傻,但是可以说我的谓词最大/ 2 返回列表中的最大元素...输出应如下所示:

我实现了最大的,它像上面一样工作,只是它不输出“false”。我该怎么做,所以它也输出这个“假”。价值?这是我必须完成的一项烦人的任务。:(

0 投票
1 回答
1301 浏览

matrix - 为什么“...”出现在我对 Prolog 矩阵的回答中

我编写了一些代码来创建坐标矩阵(如棋盘),如下所示:

我第一次执行它很顺利,但是当我增加矩阵的维度时,矩阵末尾的“点”开始随着维度的增加而增加一个坐标,如下所示:

任何人都知道为什么会发生这种情况?

谢谢!

0 投票
1 回答
5300 浏览

prolog - 理解规则 - 错误的答案

我是 Prolog 的新手,我只是在想,为什么这条规则在一次为真之后给了我错误的结果。

likes(1,banana).
likes(1,mango).

test :- likes(1,banana),likes(1,mango).

我想知道这个错误背后的原因。

0 投票
2 回答
29539 浏览

prolog - Prolog 在尝试使用时给出错误“未定义的过程”:-

我在 Windows 上使用 SWI-Prolog 并收到以下错误:

我不完全确定发生了什么,因为这在上周有效,而我刚刚开始学习 Prolog。