:-[-listas].
%com append normal
flatten([],[]).
flatten([X|Y],L):-!, flatten(X,L1),flatten(Y,L3), append(L1,L3,L).
flatten(X,[X]).

flatten1(X,L):-flatdif(X,L-[]).
flatdif([],L-L).
flatdif([H|T],L1-L3):-flatdif(H,L1-L2), flatdif(T,L2-L3).
flatdif(X,[X|Z]-Z).

flatten0(X,L):-flatdif0(X,L,[]).
flatdif0([],L,L) :-!.
flatdif0([H|T],L1,L3):- !, flatdif0(H,L1,L2), flatdif0(T,L2,L3).
flatdif0(X,[X|Z],Z).
