我需要Prolog的帮助。
如果列表L
中的每个项目在列表U
中只出现一次,则在Prolog中编写一个谓词,该谓词会成功。
unique(L,U).
答案 0 :(得分:1)
执行此操作的方法之一(可能不是此分配要解决的方式):
unique(L, U) :-
sort(L, Lunique),
union(U, Lunique, X),
msort(U, Usorted),
msort(X, Xsorted),
Usorted == Xsorted.
我们试一试:
?- unique([a, b], [a, b, c]).
true.
?- unique([a, b], [a, b, c, c]).
true.
?- unique([a, b], [a, a, b, c, c]).
false.
?- unique([b, a, c], [a, b, c, c]).
false.
?- unique([b, a, c], [a, b, c, e]).
true.
在SWI Prolog和ECLiPSe CLP中测试。