我有一个任务是在执行时获取列表,如果列表中至少有一个匹配的元素显示为false,否则比较列表为真
我尝试了一些内置函数,但是如果没有它们,我将无法对其进行整理。
有人可以帮忙吗?
预期结果:
Set([1,2],[3,1]).
false
Set([2,3,4],[1,5,6]).
true
答案 0 :(得分:1)
disjoint(Xs, Ys) :-
maplist(list_without(Ys), Xs).
list_without([], _).
list_without([X|Xs], E) :-
dif(X, E),
list_without(Xs, E).
或者没有地图列表:
disjoint(Xs, Ys) :-
all_without(Xs, Ys).
all_without([], _).
all_without([X|Xs], Ys) :-
list_without(Ys, X),
all_without(Xs, Ys).