【发布时间】:2015-12-10 04:58:20
【问题描述】:
我试图找出两个列表是否重叠。我想写的谓词 接受两个列表,如果列表至少有两个共同元素,则返回 true。
具有预期答案的示例查询:
?- overlap([13,14,15], [17,18,13,19]).
false.
?- overlap([13,14,15], [14,17,13,18,16]).
true.
但是,到目前为止,我只有一个元素可以工作。
member(M, [M|_]).
member(M, [_|T]) :-
member(M, T).
overlap(X, Y) :-
member(M, X),
member(M, Y).
?- overlap([a,b,c,d], [1,2,c,d]).
如何确保它检查两个元素,而不仅仅是一个?
【问题讨论】: