问题标签 [prolog-findall]

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

prolog - Findall里面的findall

有可能做这样的事情吗?

---知识库---

---知识库端---

EI是一个站,NF它应该返回路由中的数字,谓词路由的第一个参数。

我究竟做错了什么?

0 投票
1 回答
293 浏览

recursion - Prolog - findall 内部的操作

在 Prolog 中使用findall如何在不影响回溯的情况下在目标内执行操作?

以下示例说明了我要实现的目标:

这里的问题是,当我运行“run.”时,它会打印:

而如果我运行“run2”。(这是相同的代码,没有调用sumValue和“+ F”)它只打印

从我的调试来看,问题似乎是当findall完成第一个目标并回溯时,sumValue会影响它的行为。

所以我的主要问题是如何在特定条件下(在这种情况下,当“M_1”与“M”不同时)将值(来自另一个谓词)与变量“C”相加,而不影响findall回溯

我整天都在尝试解决这个问题,我已经尝试过使用“!” 但无济于事。

0 投票
1 回答
1016 浏览

prolog - 在 prolog 中查找所有解决方案

在序言中,我试图将每个有效的需求配对与资源统一起来

使用这个公式

并运行此测试。

该计划的这一部分的重点是为每个班级配备一名教师,该教师既具有授课资格,又在此期间不缺课。它应该给出一个清单。

运行时,会生成上述内容。这是正确的,但它的格式对我来说没用,因为我需要它作为自己的变量来进行进一步的计算。那么解决办法就是用bagof或者findall吧?

所以我从程序的主要部分中删除了失败子句,然后将测试更改为这个

但它会产生这个

如果你仔细观察,你会发现结尾没有句号,也没有正确/错误的陈述。这会让人们相信它是无限循环的。然而,情况并非如此,因为 Bag 矩阵已完全形成,我可以简单地键入“。” 结束程序(而不是,你知道,中止它)。

它只生成第一个有效的解决方案。为什么会这样?

0 投票
2 回答
689 浏览

prolog - findall 的替代品

我正在尝试findall在 Prolog 中创建替代方案。

我所拥有的是:

然而,这给了我不一致的结果。怎么了?先感谢您。

0 投票
1 回答
147 浏览

prolog - 您可以使用 clpfd 来实现覆盖算法吗?

假设我想以简单的匹配方式找到区分两个类的一组特征/属性,我可以在 prolog 中使用 clpfd 来做到这一点吗?

每个示例由四个二元特征描述,并且有三个正示例(A,B,C)和三个负示例(D,E,Q)。

如果它们匹配,则一组选定的特征将覆盖一个示例。因此,例如,如果Features与 统一[0,1,0,1],那么这将匹配两个正数和 0 个负数。

我设置Value为等于TP(真阳性)- TN(真阴性)。我想最大化价值并找到相应的特征集。

我查询?-c_s_mining(Features,Value),labelling([max(Value)],[Value]). 我期望的答案是:Features =[0,1,0,1], Value =2但我得到Features =[_G1,_G2,_G3,G4],Value =0, G1 in 0..1, G2 in 0..1, G3 in 0..1, G4 in 0..1.

0 投票
0 回答
228 浏览

list - Prolog:使用用户输入使用 findall 创建列表

所以我的问题如下:

我必须使用 findall / bagof / setof 命令创建一个列表。

这是我的数据文件:

我必须创建一个列表,其中包含与每张专辑相关的所有音乐家(音乐家)。

我虽然是这样的:

这个想法是在专辑(X,Y)上使用用户输入专辑,以便它只会找到与该专辑关联的音乐家并将其添加到列表中。

这带来了两个我似乎无法解决的问题:

  1. 它不起作用,该功能将所有音乐家添加到列表中。
  2. 每次调用该函数时它仅适用于一张专辑。是否可以在单个函数中执行此操作?就像将专辑和音乐家保存在一个列表中,而不是将这些列表添加到一个列表中?或者我应该使用 bagof 而不是 findall?

谢谢您的帮助。

0 投票
1 回答
35 浏览

prolog - swi prolog findall(\+z-AS-Sesio-Hsemana u-CU-Hsemana, between(1,NH,Sesio), C) 给出错误

我正在尝试在 findall 中使用 2 个模板,但由于第一个模板和第二个模板之间的 ' ' 而出现错误,它要求我输入一个操作数,我输入 + 然后它将 C 显示为 template1 '+' template2但我不希望 + 出现在 C 上。

还尝试了 findall((+z-AS-Sesio-Hsemana, u-CU-Hsemana), between(1,NH,Sesio), C)

但随后 Hsemana 和 u-CU-Hsemana 之间的 ',' 也出现了,我只想要一个空格 ' '。

0 投票
1 回答
662 浏览

prolog - Prolog 组合谓词

只是关于 Prolog 的一个小问题。假设我使用内置谓词findall/3来获取列表并将变量X用作我的输出。

我想知道如何在另一个谓词中使用此列表,例如last/2查找此列表的最后一个元素。如果您也可以包含一个小示例,那将有很大帮助。

0 投票
1 回答
619 浏览

prolog - 如何使用 tranpose 和 findall 打印谓词中的所有变量

我想知道如何使用 tranpose 和 findall 列出预测中的所有变量并将其显示为矩阵?

所以这是包含所有变量的谓词。

0 投票
1 回答
316 浏览

matrix - Prolog 在矩阵上使用 findall/3

我的 SWI 序言中有以下矩阵;

我想使用一个 findall/3 谓词,这样我就可以获得所有 spot(X,Y) 事实的列表,例如 >>>

应该返回如下内容;

但是,由于矩阵由列表中的列表组成,我对如何实现这一点感到非常困惑。如果有人可以向我展示一个配置的谓词以实现上述列表,将不胜感激。

谢谢你的帮助!!!- 真的很感激!

编辑 - 可能能够使用下面找到的这段代码,但无法看到我如何将它实现到第二个 findall/3 语句中。真的卡住了,非常感谢您对此的任何帮助。