[Précedent][Fin-Préc.][Fin][Haut]
%%% - Section 1.1 - %%%
est_liste_atomes([]).
est_liste_atomes([X|T]) :-
atom(X),
est_liste_atomes(T).
%% sans cut %%
atomise([], []).
atomise([X|L1], [X|L2]) :-
atom(X),
atomise(L1, L2).
atomise([X|L1], L2) :-
not(atom(X)),
atomise(L1, L2).
%% avec cut %%
atomise2([], []).
atomise2([X|L1], [X|L2]) :-
atom(X),
!,
atomise2(L1, L2).
atomise2([X|L1], L2) :-
atomise2(L1, L2).
%% sans cut %%
somme([], 0).
somme([H|T], N) :-
integer(H),
somme(T, N1),
N is N1 + H.
somme([H|T], N1) :-
not(integer(H)),
somme(T, N1).
%% avec cut %%
somme2([], 0).
somme2([H|T], N) :-
integer(H),
!,
somme2(T, N1),
N is N1 + H.
somme2([H|T], N1) :-
somme2(T, N1).
%%% - Section 2.2 - %%%
parent(elizabeth, charles).
parent(charles, william).
parent(charles, henry).
parent(elizabeth, anne).
parent(anne, peter).
parent(anne, zara).
parent(elizabeth, andrew).
parent(andrew, beatrice)
parent(andrew, eugenie).
parent(elizabeth, edward).
parent(edward, louise).
ancetre(X, Y) :-
parent(X, Y).
ancetre(X, Y) :-
parent(X, Z).
ancetre(Z, Y). %% notez l’ordre !
%%% - Section 2.3 - %%%
non(X) :-
X,
!,
fail.
non(X).
%%% - Section 3 - %%%
ajouter(X, L, X) :-
extraire(X, L, _),
!.
ajouter(X, L, [X|L]).
apprecie1(xavier, Y) :-
mexicain(Y),
!,
fail.
apprecie1(xavier, _).
apprecie2(xavier, Y) :-
not (mexicain(Y)).
[Précedent][Fin-Préc.][Début][Haut]