[Précedent][Fin-Préc.][Fin][Haut]

4 Éléments de corrigé


  %%% - 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]