我有这个功能可以压缩列表:
flatten([], []) :- !.
flatten([L|Ls], FlatL) :-
!,
flatten(L, NewL),
flatten(Ls, NewLs),
append(NewL, NewLs, FlatL),
flatten(L, [L]).
和“没有重复”:
my_compress([], []):- !.
my_compress([X|Xs], Ys):-
my_member(X, Xs),
!,
my_compress(Xs, Ys).
my_compress([X|Xs], [X|Ys]):-
my_compress(Xs, Ys).
我不知道如何使用这两个函数来创建函数。我想在没有重复的情况下展平列表,但是在1个函数中。
答案 0 :(得分:0)
您可以递归地将my_compress/2
谓词应用于展平列表,如:
flatten([], []) :- !.
flatten([L|Ls], FlatL) :-
!,
flatten(L, NewL),
flatten(Ls, NewLs),
append(NewL, NewLs, FL),
my_compress(FL,FlatL).
flatten(L, [L]).
示例:
?- flatten([1,1,1,[[2],2],2,[3],3],L).
L = [1, 2, 3].