list - 如何在Prolog中检查一个列表的所有元素是否都是另一个列表的成员

标签 list prolog compare

我现在正在学习 Prolog,递归思维对我来说很难。

我有两个列表,例如L1=[1,2,3]L2=[3,1,2] 我应该检查 L1 的所有元素是否都包含在 L2

所以 allMembers(L1,L2). 应该返回 true 并且 allMembers(L1,[2,3,4]). 应该返回 false ,因为 4 中没有 L1
我认为有可能获得一个列表的头部并返回 true 如果它在另一个列表中找到该元素(通过将其拆分直到列表只包含一个项目),但我不知道如何在序言。

如果你能帮助我更快地吸收 (?)

我在这里发现了类似的问题,但找不到我的具体问题的答案:/

编辑:
我现在有:

isMemberOf(X,[X|_]).
isMemberOf(X,[_|T]):- member(X,T).

我需要将其用于 L1L2 中的任何元素

最佳答案

解决您的子问题:如果 member(A,B) 是列表 A 的成员,则 B 为真。

关于list - 如何在Prolog中检查一个列表的所有元素是否都是另一个列表的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554323/

相关文章:

java - 需要比较 ArrayList 中的对象以返回最高值

java - 是否可以在所有情况下比较两个 .java 文件的方法和字段?

Python:在列表中复制列表

list - Prolog:通过read/1向列表添加元素

list - Prolog 中偶数之和、奇数乘积

prolog - 具有相同开始和结束的所有子串

c - 在 C 中使用 qsort

c# - 没有装箱或类型参数转换

python - 生成 float 列表,其中每个数字小于另一个 float 列表的数字

list - JavaFX - 将属性绑定(bind)到可观察集合中每个元素的属性