如何使用Prolog提供树的叶子的唯一列表:
例如:
mytreeunique([a,[b,[a,[c,d]]]],X).
收益率X=[a,b,c,d]
答案 0 :(得分:0)
试试这个
mytreeunique([H|T],[H|R]):-
\+is_list(H),
mytreeunique(T,R),
\+member(H,R).
mytreeunique([H|T],R):-
\+is_list(H),
mytreeunique(T,R),
member(H,R).
mytreeunique([H|T],R):-
is_list(H),
mytreeunique(H,R1),
mytreeunique(T,R2),
append(R1,R2,R).
mytreeunique([],[]).
首先检查head是否为元素,如果尚未添加,则将其添加到结果中。
如果已经在结果中,则第二种情况会跳过H。
第三种情况检查Head是否为列表,因此它遍历它并且还遍历列表的其余部分并将结果附加在一起。
第四种情况是基本情况。