Professional Documents
Culture Documents
Solutions Listes
Solutions Listes
Solutions Listes
tete([],[]).
tete([X|_], X).
fin([],[]).
fin([X|[]], X).
fin([_|L],Y):-last(L,Y).
ajoutdebut(X,L,[X|L]).
suppdebut([],[]).
suppdebut([_|L],L).
suppfin([],[]).
suppfin([_],[]).
suppfin([Y|L],R):-suppfin(L,R1),append([Y],R1,R).
appartient([A|_],A).
appartient([_|R],B):-appartient(R,B).
long([],0).
long([_|R],L):-long(R,L1), L is L1+1.
somme([],0).
somme([A|R],L):-somme(R,L1), L is L1+A.
supp(A,[A|L], L).
supp(A,[B|L],R):-supp(A,L,R1), append([B],R1,R).
fusion([],L,L).
fusion([T|R1],L,[T|R2]) :- fusion(R1,L,R2).
invers([],[]).
invers([X|L],R):-invers(L,L1), append(L1,[X],R).
pal([]).
pal([_]).
pal(L):-append([X|R],[X],L),pal(R).
% tri par bulles
delete([],[]).
delete([_],[]).
delete([X|L],L1):-delete(L,L2), append([X],L2,L1).
last([],[]).
last([X|[]], X).
last([_|L],Y):-last(L,Y).
add(X,L,[X|L]).
tri([],[]).
tri([X],[X]).
tri([X,Y|R],L):-X =< Y, tri([Y|R],L1), append([X],L1,L).
tri([X,Y|R],L):- Y < X, tri([X|R],L1), append([Y],L1,L).
main([],[], []).
main([],L,L).
main(L,R, R1):-tri(L,T), last(T, Y), add(Y,R,R2), delete(T,D), main(D,R2, R1).
% exemple ?- main([17,20,9,1,4,2],[],R).