问题标签 [prolog-setof]

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 回答
748 浏览

prolog - 如何从 swi-prolog 查询中只获得一个输出?

如何从 SWI-Prolog 查询中只获得一个输出?我曾尝试使用 cut ( !) 但它似乎不起作用。

例如:我已经用陈述填充了我的知识库,我想找到任何一个既是女性又是某人母亲的名字。

我已经尝试过:

...但这给了我所有的X-__Y-__

我也试过:

...但这仍然给了我X-__Y__

我只想找到X. 有没有人有任何提示让我以某种方式只得到一个?

0 投票
1 回答
577 浏览

prolog - Prolog,从 setOf 列表中找到最大值

我有一个谓词,目的是打印出哪个国家面积最大(边界最大的国家=最大面积)。这就是我的谓词的样子:

该谓词中使用的谓词如下:

谁能告诉我我在这里做错了什么?我如何简单地将我的所有国家/地区都放入列表中,然后遍历列表以找到具有最大边界的国家,而不是在我将它们放入列表时将它们一个接一个地打印出来?提前致谢。

0 投票
0 回答
28 浏览

prolog - 序言:“setof”中的“\+ memberchk”

我有以下形式的 Prolog 代码:

这样Element解决方案中的术语的所有实例some_function都收集在列表中Elements

我现在想改进这一点,只有当它在 list 上不存在时才会添加memberchkterm 的任何实例化。ElementElementsList

我尝试了以下方法:

这在只List添加未打开的元素的意义上确实有效。但问题是,当 term 的所有实例都已经 onsetof时,现在会失败。而我希望它返回一个空列表,但不会失败。ElementListElements

关于如何做到这一点的任何想法?谢谢!

0 投票
1 回答
1395 浏览

list - Prolog:按字母顺序排列列表

我有以下问题,我应该只使用 'bagof', 'findall', 'setoff' 来订购一个仅包含按字母顺序排列的字符串的列表,我不应该使用任何排序算法。

这是我必须列出的 .pl 文档的内容。

这是我到目前为止所拥有的:

这使得列表包含所有音乐家,但现在我似乎无法理解如何订购它。

0 投票
2 回答
323 浏览

prolog - SWI Prolog 对聚合的使用

我在 SWI Prolog 上创建了一个简单的数据库。我的任务是根据生产计划计算每个部门的工作时间。我快完成了,但我不知道如何总结我的结果。至于现在我得到这样的东西

部门金额

b 20

一个 5

c 50

c 30

我怎么能把它变成这个?

b 20

一个 5

c 80

我的代码https://gist.github.com/senioroman4uk/d19fe00848889a84434b

0 投票
0 回答
89 浏览

prolog - 无权满足 prolog 中的静态过程 setof/3

我正在使用 SWI prolog,并且想知道如何在我的源代码中使用 setof。

我有一个文件:prolog_example.pl其中有一些事实:

现在我想在不同的列表中获取所有西部和北部团队的集合。所以我放了:

setof(X-Y, canMatch(X,Y), ListOfMatches).

在我的源代码中。但是,当我尝试在 SWI-Prolog 中编译或运行它时,我最终得到了这个错误:

但是,如果我在加载文件后将 setof 设置为查询(并且我取出我的 setof 行),我会得到我想要的正确答案。那么如何在我的源代码中使用 setof 呢?

0 投票
2 回答
321 浏览

list - 在 Prolog 中使用模式匹配来查找子多重集

我是 prolog 的新手,我想知道是否有人可以帮助我解决这个问题。问题:给定整数 1,2,3,4,以及谓词 mult/2、div/2、div/2、minus/2、minus/2 和 eval/2,我需要编写一个谓词解决方案/1 ,当这样调用时:

它应该以变量 L 结束,该变量统一为值为 6 的表达式列表。表达式的形式为:

但是我的代码不起作用。我有两个版本。第一个冻结了 SWI-Prolog,在我输入句号后不返回任何答案,之后也不让我评估其他任何内容:

当我键入时,第二个版本只返回 false ?- solutions(L).

非常感谢您花时间提供帮助!

0 投票
1 回答
2682 浏览

prolog - 在 findall/setof 中 Prolog 多个谓词

我正在尝试使用以下事实和规则(简化)找到希腊神话缪斯的祖先:

muse祖先规则定义为:

我想基本上做以下事情:

这不起作用,并返回false. 我尝试的另一个变体:

但鉴于我有更多的parent事实,它只是遍历每一个可能的ancestor包。

我尝试的最后一个变体:

但错误是:

这是有道理的。

我希望能够写出结果,例如:

我究竟做错了什么?

0 投票
1 回答
1438 浏览

prolog - 查找具有匹配谓词的所有事实

我有一个充满interacts关系的事实库:

以及确定两种药物是否相互作用的函数:

我试图列出两种给定药物的所有相互作用。鉴于两种药物相互作用(interacts_with()返回true),我将如何收集这两种药物相互作用的副作用?

例如:

应该返回:

我一直在尝试findall/3,但我只得到我传入的返回列表,其中包含更多存在的匹配项:


编辑

我试图实现@false 建议的内容:

现在我得到:

两者setoffindall返回false,而不是传入的药物清单

0 投票
1 回答
475 浏览

prolog - Prolog - 使用 Bagof

在准备考试时,我一直被困在过去的试卷上。

问题是:

https://gyazo.com/ee2fcd88d67068e8cf7d478a98f486a0

我想我必须使用findall/bagof/setof,因为我需要收集一组解决方案。此外,setof似乎很合适,因为列表需要按降序排列。

到目前为止,我的解决方案是:

然而问题是我并没有在一个列表中得到所有答案。我很可能错误地使用了 Team^。我真的很感激关于如何根据点获得有序元组列表的指针。它给我的输出是:

此外,不清楚什么样的订单,如果有的话,所以我也不知道如何setof订购。

使用 setof 解决这个问题的最佳方法是什么?

谢谢。