List 将谓词应用于不同长度的列表
我需要将谓词应用于列表列表。我听说maplist/3可能可以做到这一点,但我在列表中的列表长度可能不同,maplist喜欢所有长度相同的列表 下面是我需要应用于列表中所有列表的谓词。它检查位于同一位置的另一个列表中的任何元素是否相同,如果相同,则返回false。例如:compatible[1,2,3,4,5],[1,6,7,3,2]将返回false,因为1在第一个位置匹配。此谓词适用于不同长度的列表List 将谓词应用于不同长度的列表,list,prolog,element,predicate,List,Prolog,Element,Predicate,我需要将谓词应用于列表列表。我听说maplist/3可能可以做到这一点,但我在列表中的列表长度可能不同,maplist喜欢所有长度相同的列表 下面是我需要应用于列表中所有列表的谓词。它检查位于同一位置的另一个列表中的任何元素是否相同,如果相同,则返回false。例如:compatible[1,2,3,4,5],[1,6,7,3,2]将返回false,因为1在第一个位置匹配。此谓词适用于不同长度的列表 compatible([],_). compatible(_,[]). compatible([
compatible([],_).
compatible(_,[]).
compatible([HA|TA],[HB|TB]) :-
HA \= HB,
compatible(TA,TB).
列表的示例列表可能如下所示:
[[3,4,6,6,7],[8,2,6,3,67],[7,4,7,4,3]],[[8,2,6,3,67],[7,4,7,4,3]]).
Let X and Y be the lists passed in.
where X=[[3,4,6,6,7],[8,2,6,3,67],[7,4,7,4,3]]
and Y=[[8,2,6,3,67],[7,4,7,4,3]]
compatible([8,2,6,3,3],[7,4,7,4,3]).
我只需要将谓词应用于Y列表。我将如何在列表列表中调用compatible来做到这一点,同时记住不同的长度
*编辑以澄清更多信息:
因此,我们基本上会这样称呼兼容
compatible([8,2,6,3,67],[7,4,7,4,3]).
从上面的列表中,它仅应用于列表的Y列表。在这里它会变成真的
如果我这样叫compatible:
[[3,4,6,6,7],[8,2,6,3,67],[7,4,7,4,3]],[[8,2,6,3,67],[7,4,7,4,3]]).
Let X and Y be the lists passed in.
where X=[[3,4,6,6,7],[8,2,6,3,67],[7,4,7,4,3]]
and Y=[[8,2,6,3,67],[7,4,7,4,3]]
compatible([8,2,6,3,3],[7,4,7,4,3]).
它会失败,因为3是这两个列表的第五个元素。尝试所有selectl,LoL,Ls,maplistcompatibleL,L这让我陷入某种无限循环,什么是Ls?Ls是没有L的LoL,代码似乎可以工作-但是有一个要删除的闭合参数?-LoL=[[8,2,6,3,67],[7,4,7,4,3]],所有selectl,LoL,Ls,maplistcompatibleL,Ls。为真?-LoL=[[8,4,6,3,67],[7,4,7,4,3]],用于所有SELECTL、LoL、Ls、MAPLISTPATABILEL、Ls。给假。