我最近开始学习Prolog,我无法解决如何组合三个列表的问题.
我能够组合2个列表:
%element
element(X,[X|_]).
element(X,[_|Y]):-
element(X,Y).
%union
union([],M,M).
union([X|Y],L,S) :- element(X,L),union(Y,L,S).
union([X|Y],L,[X|S]) :- (not(element(X,L))),union(Y,L,S).
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
我正在尝试编写一个规则来决定一个项目是否X恰好出现在列表中L.
unique(X, [X|T]):- !, \+ member(X, T).
unique(X, [_|T]):- unique(X, T).
Run Code Online (Sandbox Code Playgroud)
该规则适用于确定值是否在列表中是唯一的,或者当我尝试使用unique(X, [1,2,3,1,3,2,5,4,3,8]).它在列表中获取唯一值时返回正如false.我所期望的那样(如member(X, list).:
X = 5 ;
X = 4 ;
X = 8 ;
Run Code Online (Sandbox Code Playgroud)
我是一个完全的初学者,我不知道我做错了什么.