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

prolog - Prolog - 查找列表列表(列表)的所有组合(产品)

我尝试了一些功能来实现一个谓词,它可以找到所有的组合,就像在那个例子中一样:

这些应该是输出,

但我发现的所有解决方案都在使用findall我不想在我的任务中使用的解决方案。

我怎样才能以不同的方式实现谓词,避免findall

或者也许我如何my_findall在不使用任何内置功能的情况下实现?

像这里这样没有内置谓词的解决方案会很棒

感谢帮助者!

0 投票
1 回答
470 浏览

prolog - 由于 findall 在 Prolog 中不起作用而导致的计数列表大小

我使用 findall 获得了一个特定的列表,然后想计算其中的元素数量。

IE

这将返回我的数据库 [beagle, basset] 中的猎犬需求列表。

但是现在如果我尝试使用我的新谓词来计算它:

用我的查询?-list_length(huntingbreeds(List),Count)。

这只是返回假。

我想我可能需要使用 arg 即

但它再次返回错误。有人知道我如何获得列表大小吗?我知道函数 list_length 就像我给它一样工作:

我得到计数​​ = 3。

但只是不知道如何从查找结果中将其传递给我的列表。我曾尝试将完整的 findall 声明代替,huntingbreeds(List)但这仍然无济于事。

0 投票
1 回答
822 浏览

prolog - findall(X,condition,List) 列表中填充了指针而不是真实对象

我正在尝试从数据库中获取符合我条件的对象列表。

这是我的数据库:

我写了一个谓词来查询哪个学生在附加到他的列表中有一个字符串:“infi/a”

问题是 L1 没有向我返回如下列表:

它返回:

为什么会发生这种情况,我该如何解决?

0 投票
1 回答
139 浏览

prolog - 高效的 findall() 处理?

我有以下“事实”结构。

然后我希望有成千上万的人。'conds' 是在处理事实时将被评估的条件。对于每一个真实的事实,我将分数和索引存储在一个列表中以供进一步处理。一般的想法是findall/3事实,然后再过一遍......

我担心的是findall/3每次运行都会吞噬所有数千个事实,即使用太多内存。

我将如何findall做,但要逐个处理条件。我仍然会处理所有条件,但我想使用更少的内存。


根据“垫子”的建议,这似乎可行:

0 投票
2 回答
132 浏览

list - Prolog 谓词无法解析

这可能是一个菜鸟错误,但我正在尝试解决这个问题:

使用 findall 谓词查找查询以获得以下答案: 获取在其居住城市以外的城市工作的人员列表:

这是数据库:

这是我试图用来解决它的谓词:

但它只会返回false。有谁知道如何修理它?

0 投票
2 回答
1056 浏览

recursion - Prolog - 获取朋友的朋友列表

我正在努力获得一个体面的结果,

我有几个朋友,

使用findall(X,friend(a,X),List)I'm getting all direct friends ofa

例如,我想获取 的 3 级好友列表a,例如我想要 的直接好友a、好友的好友a(即bb2b3的好友)和 的好友c。获取列表:

我正在尝试一切。我只能得到直接的朋友或朋友的所有朋友。

帮助!!

0 投票
0 回答
208 浏览

prolog - Prolog - findall 返回一个未实例化的变量列表,而不是值

我正在 Prolog 中编写一个跳棋游戏,我想编写一个谓词来打印所有可能的移动。

我有一个谓词来检查所有可以做出的合法动作 -

我对黑人士兵和“国王”士兵有类似的谓词。

这是 findall 谓词 -

似乎它确实找到了动作,但是这是我得到的输出 -

我想要做的是满足is_move_legal谓词中的 p(X1,Y1), p(X2,Y2) 参数。

编辑:

从这里的评论中我意识到了错误-而不是(X-> Y),写-

非常感谢您的帮助。

谢谢!

0 投票
3 回答
127 浏览

prolog - 使用 n 分数问题避免 findall 溢出

我正在尝试打印n=4的n 分数问题的所有解决方案:

当我运行查询时:

我得到以下异常:

我在想是否有办法在程序内部循环并每次打印一个解决方案,或者我不能这样做,因为问题有太多解决方案?

0 投票
1 回答
290 浏览

prolog - 如何在 Prolog 中返回推荐列表?

对于我的任务,我应该列出 20 只潜在宠物,然后定义关于每只宠物的事实。然后我需要问潜在的宠物主人五个问题,这将有助于决定哪些宠物是好的推荐。我正在尝试根据用户输入返回宠物列表,但它每次都返回 true,实际上并没有列出推荐的宠物。不知道我哪里出错了。我只会在我的代码示例中包含一些宠物,所以它不会太长。

宠物顾问.pl:

所以如果我要回答这样的问题:小型夜间室内哺乳动物 15

它应该返回一个带有 [cat, chinchilla] 的列表,但它返回的都是真的。

0 投票
1 回答
70 浏览

list - 如何使用 findall/3 内联目标(仅使用一个谓词)?

我有一个看起来像这样的知识库

对于每个fact1& fact2,其中(在此示例中)数字匹配,我希望将相应字母的列表作为元组。我想为此使用findall/3并且只有一个谓词。

我之前在这里问过一个关于如何解决类似问题的问题,答案是使用两个谓词该解决方案如下所示:

给定事实示例的结果应如下所示:

可以仅使用findall/3组合这两个谓词吗?