追加List1中与List2不同的元素prolog中的不同元素
我目前正试图找到列表L1和L2中彼此不同的所有元素,并将它们附加到列表L中 到目前为止,我尝试了以下方法:追加List1中与List2不同的元素prolog中的不同元素,prolog,Prolog,我目前正试图找到列表L1和L2中彼此不同的所有元素,并将它们附加到列表L中 到目前为止,我尝试了以下方法: difference(L1, L2, L) :- findall(H, (member(H,L1),\+member(H, L2)), L). |?- difference([1,2,3],[1,2,3,4,5,6], L). |?- difference([1,2,3,4,5,6],[1,2,3], L). 但是,当我查询以下内容时,我只得到一个空列表: diff
difference(L1, L2, L) :-
findall(H, (member(H,L1),\+member(H, L2)), L).
|?- difference([1,2,3],[1,2,3,4,5,6], L).
|?- difference([1,2,3,4,5,6],[1,2,3], L).
但是,当我查询以下内容时,我只得到一个空列表:
difference(L1, L2, L) :-
findall(H, (member(H,L1),\+member(H, L2)), L).
|?- difference([1,2,3],[1,2,3,4,5,6], L).
|?- difference([1,2,3,4,5,6],[1,2,3], L).
我还尝试查询以下内容:
difference(L1, L2, L) :-
findall(H, (member(H,L1),\+member(H, L2)), L).
|?- difference([1,2,3],[1,2,3,4,5,6], L).
|?- difference([1,2,3,4,5,6],[1,2,3], L).
有趣的是,对于这个,我得到了L=[4,5,6]。如何将我的事实重写为,使其也能与第一个查询一起工作?您的定义为“不在L2中的所有L1元素”。您想要的是“L1或L2中不在L1和L2中的所有元素”
可能的重复确实是重复,但我很好奇为什么我的解决方案不起作用:)啊,我明白了,这么简单的错误!非常感谢你!