A、B、U、C的PROLOG联合

A、B、U、C的PROLOG联合

我最近开始学习PROLOG,我无法解决如何将三个列表结合起来。

我能把两份名单结合起来:

%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).

有人能帮我吗?


繁星淼淼
浏览 565回答 3
3回答

胡子哥哥

您可以对前两个列表进行合并,然后将结果与第三个列表进行合并:union(L1, L2, L3, U):-union(L1, L2, U12), union(U12, L3, U).你可以改进union/3用切割操作符:union([],M,M). union([X|Y],L,S) :- element(X,L), !, union(Y,L,S). union([X|Y],L,[X|S]) :- union(Y,L,S).
打开App,查看更多内容
随时随地看视频慕课网APP