问题标签 [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.
prolog - Findall里面的findall
有可能做这样的事情吗?
---知识库---
---知识库端---
EI是一个站,NF它应该返回路由中的数字,谓词路由的第一个参数。
我究竟做错了什么?
recursion - Prolog - findall 内部的操作
在 Prolog 中使用findall如何在不影响回溯的情况下在目标内执行操作?
以下示例说明了我要实现的目标:
这里的问题是,当我运行“run.”时,它会打印:
而如果我运行“run2”。(这是相同的代码,没有调用sumValue和“+ F”)它只打印
从我的调试来看,问题似乎是当findall完成第一个目标并回溯时,sumValue会影响它的行为。
所以我的主要问题是如何在特定条件下(在这种情况下,当“M_1”与“M”不同时)将值(来自另一个谓词)与变量“C”相加,而不影响findall回溯。
我整天都在尝试解决这个问题,我已经尝试过使用“!” 但无济于事。
prolog - 在 prolog 中查找所有解决方案
在序言中,我试图将每个有效的需求配对与资源统一起来
使用这个公式
并运行此测试。
该计划的这一部分的重点是为每个班级配备一名教师,该教师既具有授课资格,又在此期间不缺课。它应该给出一个清单。
运行时,会生成上述内容。这是正确的,但它的格式对我来说没用,因为我需要它作为自己的变量来进行进一步的计算。那么解决办法就是用bagof或者findall吧?
所以我从程序的主要部分中删除了失败子句,然后将测试更改为这个
但它会产生这个
如果你仔细观察,你会发现结尾没有句号,也没有正确/错误的陈述。这会让人们相信它是无限循环的。然而,情况并非如此,因为 Bag 矩阵已完全形成,我可以简单地键入“。” 结束程序(而不是,你知道,中止它)。
它只生成第一个有效的解决方案。为什么会这样?
prolog - findall 的替代品
我正在尝试findall
在 Prolog 中创建替代方案。
我所拥有的是:
然而,这给了我不一致的结果。怎么了?先感谢您。
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.
list - Prolog:使用用户输入使用 findall 创建列表
所以我的问题如下:
我必须使用 findall / bagof / setof 命令创建一个列表。
这是我的数据文件:
我必须创建一个列表,其中包含与每张专辑相关的所有音乐家(音乐家)。
我虽然是这样的:
这个想法是在专辑(X,Y)上使用用户输入专辑,以便它只会找到与该专辑关联的音乐家并将其添加到列表中。
这带来了两个我似乎无法解决的问题:
- 它不起作用,该功能将所有音乐家添加到列表中。
- 每次调用该函数时它仅适用于一张专辑。是否可以在单个函数中执行此操作?就像将专辑和音乐家保存在一个列表中,而不是将这些列表添加到一个列表中?或者我应该使用 bagof 而不是 findall?
谢谢您的帮助。
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 之间的 ',' 也出现了,我只想要一个空格 ' '。
prolog - Prolog 组合谓词
只是关于 Prolog 的一个小问题。假设我使用内置谓词findall/3
来获取列表并将变量X
用作我的输出。
我想知道如何在另一个谓词中使用此列表,例如last/2
查找此列表的最后一个元素。如果您也可以包含一个小示例,那将有很大帮助。
prolog - 如何使用 tranpose 和 findall 打印谓词中的所有变量
我想知道如何使用 tranpose 和 findall 列出预测中的所有变量并将其显示为矩阵?
所以这是包含所有变量的谓词。
matrix - Prolog 在矩阵上使用 findall/3
我的 SWI 序言中有以下矩阵;
我想使用一个 findall/3 谓词,这样我就可以获得所有 spot(X,Y) 事实的列表,例如 >>>
应该返回如下内容;
但是,由于矩阵由列表中的列表组成,我对如何实现这一点感到非常困惑。如果有人可以向我展示一个配置的谓词以实现上述列表,将不胜感激。
谢谢你的帮助!!!- 真的很感激!
编辑 - 可能能够使用下面找到的这段代码,但无法看到我如何将它实现到第二个 findall/3 语句中。真的卡住了,非常感谢您对此的任何帮助。