More Related Content Similar to 11 library (20) More from Siham Rim Boudaoud (16) 11 library1. /* LIBRARY: quelques prédicats utiles ... */
delete(_,[],[]).
delete(X,[X|R],R):-!.
delete(X,[Y|R],[Y|R2]):- delete(X,R,R2).
append([],X,X).
append([U|X],Y,[U|Z]):- append(X,Y,Z).
member(X,[X|T]).
member(X,[_|T]):- member(X,T).
last(X,[X]).
last(X,[_|Y]):- last(X,Y).
order(A,B):- A=<B.
order(A,B):- A@=<B. /* @=< signifie: précède ou est
égal */
card([],0).
card([X|Y],N):- card(Y,N1), N is N1+1.
Exemples d'invocation et résultats obtenus :
?- delete(two,[one,three,two,five],X).
X = [one,three,five]
?- append([one,two],[three,four,five],X).
X = [one,two,three,four,five]
?- append(X,[three,four,five],[one,two,three,four,five]).
X = [one,two]
?- member(three,[one,two,three,four,five]).
yes
?- member(X,[one,two,three,four,five]).
X = one
X = two
X = three
X = four
X = five
split(H,[A|X],[A|Y],Z):- order(A,H),
split(H,X,Y,Z).
split(H,[A|X],Y,[A|Z]):- order(H,A),
split(H,X,Y,Z).
split(_,[],[],[]).
quisort([H|T],S):-
split(H,T,A,B),
quisort(A,A1),
quisort(B,B1),
append(A1,[H|B1],S),!.
quisort([],[]).
quisort([X],[X]).
nthmember(1,[X|L],X).
nthmember(N,[Y|L],X):- N1 is N-1, nthmember(N1, L, X
).
add(X,L,L):- member(X,L),!.
add(X,L,[X|L]).
remdup([X|Y],L):- member(X,Y), remdup(Y,L),!.
remdup([],[]).
remdup([X|Y],[X|Y1]):- not(member(X,Y)),
remdup(Y,Y1),.
*Veuillez consulter le fichier [Exemples/Fichier10.pl] du CD.
?- card([one,two,three,four,five],Combien).
Combien = 5
?- card([one,two,three,four,five],4).
No
?- nthmember(2,[one,two,three],X).
X = two
?- nthmember(1,[one,two,three],one).
yes
?- add(three,[one,four,five],New).
New = [three,one,four,five]
?- add(three,[one,two,three,four],New).
New = [one,two,three,four]