% (1) sublista([],_). sublista([H|A],[H|B]) :- sublista(A,B). sublista(A,[_|B]) :- sublista(A,B). % (2) conta([],[]). conta([H|T],R) :- conta(T, R1), coloca(H,R1,R). coloca(A,[],[[A,1]]). coloca(A, [ [A,N] | R ], [ [A,N1] | R ]) :- !, N1 is N+1. coloca(A, [H|L], [H|R]) :- coloca(A,L,R). % (3) perm(L,R) :- findall(X,geraperm(L,X),R). geraperm([],[]). geraperm([H|T],R) :- geraperm(T,R1), select(H,R,R1).