我正在尝试在 Prolog 中实现一个简单版本的 findall,而不使用内置的 findall 或类似的内置谓词——就像一个学习练习。 例如,假设我的数据库中有一个关系 a/1, 我想要一个像 find_the_as(List) 这样的关系给我 List = [1,11,13]。 我可以使 ...
我正在尝试在 Prolog 中实现一个简单版本的 findall,而不使用内置的 findall 或类似的内置谓词——就像一个学习练习。 例如,假设我的数据库中有一个关系 a/1, 我想要一个像 find_the_as(List) 这样的关系给我 List = [1,11,13]。 我可以使 ...
我想使用以下方法将列表的第一个元素添加到另一个列表: 但它返回错误。 有人知道为什么吗? ...
我想在一定时间内找到目标的所有解决方案。 我的意思是我想最多搜索时限的解决方案,并返回所有找到的解决方案,无论是否达到了时限,这与解决方案列表是否完整无关。 我尝试了以下方法: 但是,如果达到时间限制,它不会返回找到的部分解决方案列表,并且“false”不能是依赖于 Sol 的表达式。 这个问题与P ...
例如,如果我有一个 Prolog 谓词,例如 a(A, B)。 在给定 A 的值的情况下,是否可以在不使用诸如bagof/3或findall/3之类的内置谓词的情况下将 B 的所有在谓词 a 之后的值收集到一个列表中。 ...
所以,我对 Prolog 很陌生,我必须写一个关于时间表的简短代码。 如何将 findall 函数添加到代码本身? 现在我想写一个命令来显示我一周有多少次化学反应。 ...
我已经开始学习 Prolog 并且我想获得 findall/3 玩家的对手列表。 在概括中,我只想将实际上是玩家的对手添加到列表中,除了我自己要求的玩家。 我该如何制定这个例外? 我知道否定是失败的概念,但我不确定我是否以及如何在这里需要它。 我实际上预计,该决议将按如下方式工作: 我错过了什么? ...
我想使用递归转换此规则,但我不确定如何转换。 帮助! 链接到回答这个问题的上一个问题: 根据事实总结数据 ...
我有一些员工: 我想打印所有这些。 我现在这样做: 它可以工作,但看起来不太好,我的意思是,'_' 太多了,我必须写出“Id、PosId、FN、LN、Birth”字符串。 如何在 findall() 中直接找到员工? ...
我有规则: 其中分数定义为: 我只想找到 H 不在 Enemies 或 Team 中的 (H,E)。 我后来尝试exclude ,但结果是元组,使它工作有点复杂。 有没有办法在findall方法中过滤掉它? 我该如何处理? ...
我正在尝试解决问题,但我不知道如何正确处理谓词findall。 这个想法是下一个。 我们有一张桌子,有一些桌子堆放在桌子上。 这可能是给定情况的一个示例:Table-> a,b,c,d 因此,块a,恰好在表上,块b在块a上,依此类推。 我们还有一些谓词,例如下 ...
我需要将数据库中的所有术语统一为一个变量。 对于给定的代码: 我得到输出: 我需要得到类似的东西: 可能吗? 我知道retract / 1,它从数据库中删除了该术语,我可以遍历所有这些事实,然后逐个从数据库中撤回它们,但这似乎就像在开枪。 任何给定的建议都是不折 ...
我需要从知识库中创建一个列表,看起来像这样: 该列表需要包含元组,每个元组包含 fact2 的第二个和第三个值,以及 fact2 的相加数字,只要 fact1 和 fact2 的第一个值匹配。 也许当我展示我目前拥有的东西时,它会变得更清楚。 这是我使用 findall 语句的谓词,对我来说, ...
我有一个看起来像这样的知识库 对于每个fact1和fact2 (在此示例中)数字匹配,我希望有一个对应的字母列表作为元组。 我想为此使用findall/3和一个谓词。 我之前在这里问过一个问题 ,该问题是如何使用两个谓词来解决相似的问题。 该解决方案如下所示: 给定事实 ...
对于我的任务,我应该列出20个潜在的宠物,然后定义每个宠物的事实。 然后我需要问潜在的宠物主人五个问题,这将有助于确定哪些宠物是好的建议。 我试图根据用户输入返回宠物列表但它每次都返回true并且实际上没有列出推荐的宠物。 不知道我哪里错了。 我只会在我的代码示例中包含一些宠物,所以它不 ...
我正在尝试打印n = 4的所有n分数问题的解决方案: 当我运行查询时: 我得到以下异常: 我在想是否有办法在程序内部循环并每次打印一个解决方案,还是我不能这样做,因为问题有太多解决方案? ...
我正在努力取得不错的成绩, 我有一些朋友 使用findall(X,friend(a,X),List)我得到了a所有直接朋友 例如,我想要得到的3个好友列表a ,例如,我想直接的朋友a的朋友的朋友a (指的朋友b , b2 , b3 )和朋友c 。 获取列表: 我正 ...
这可能是一个菜鸟错误,但我正在尝试解决这个问题: 使用 findall 谓词查找查询以获取以下答案:获取在其居住城市以外的城市工作的人员列表: 这是数据库: 这是我试图用来解决它的谓词: 但它只返回false 。 有谁知道如何修理它? ...
我具有以下“事实”结构。 然后,我希望有成千上万的人。 “条件”是在处理事实时将要评估的条件。 对于每个正确的事实,我将分数和索引存储在列表中以进行进一步处理。 一般的想法是找到全部findall/3事实,然后遍历它们... 我担心的是, findall/3每次运行都会吞噬 ...
我使用findall获得了一个特定列表,然后想要计算其中的元素数量。 即 这会从我的数据库[beagle,basset]中返回猎狗的需求列表。 但是现在,如果我尝试使用新的谓词来计算它: 与我的查询?-list_length(huntingbreeds(List),C ...