cnam:utc503:declarative:prolog

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cnam:utc503:declarative:prolog [2023/12/07 01:17] – [Sudoku] jcheroncnam:utc503:declarative:prolog [2023/12/07 01:30] (Version actuelle) – [Listes] jcheron
Ligne 210: Ligne 210:
 </sxh> </sxh>
  
 +=== Somme des N premiers entiers ===
 +
 +<sxh prolog>
 +som(0,0).
 +som(N,X) :- N>0, N1 is N-1, som(N1,X1), X is N+X1.
 +</sxh>
 +
 +=== Factorielle ===
 +<sxh prolog>
 +fact(0,1).
 +fact(N,X) :- N>0, N1 is N-1, fact(N1,X1), X is N*X1.
 +</sxh>
 +
 +=== Suite de Fibonacci ===
 +<sxh prolog>
 +fibo(1,1).
 +fibo(2,1).
 +fibo(N,X) :- N>2, U is N-1, V is N-2, fibo(U,U1), fibo(V,V1),
 +         X is U1+V1.
 +</sxh>
 +
 +==== Listes ====
 +<WRAP info>
 +En Prolog, Les tableaux sont des listes, dans lesquelles les indices des éléments ne sont pas disponibles.
 +
 +En revanche, une liste L peut toujours être décomposée en L=[E|R] où E est le premier élément de la liste (E n'est pas une liste) et où R est le reste de la liste L (R est une liste : c'est en fait la tranche de L qui démarre apres E).
 +
 +La liste vide est [].
 +</WRAP>
 +
 +=== Affichage ===
 +
 +<sxh prolog>
 +affiche([]).
 +affiche([X|R]) :- write(X), nl, affiche(R).
 +</sxh>
 +
 +=== Premier élément ===
 +
 +<sxh prolog>
 +premier([X|_],X).
 +</sxh>
 +
 +=== Dernier élément ===
 +
 +<sxh prolog>
 +dernier([X],X).
 +dernier([_|L],X) :- dernier(L,X).
 +</sxh>
 +
 +=== Compte ===
 +
 +<sxh prolog>
 +compte([],0).
 +compte([_|R],N) :- compte(R,N1), N is N1+1, N>0.
 +</sxh>
 +
 +=== Somme ===
 +
 +<sxh prolog>
 +somme([],0).
 +somme([X|R],N) :- somme(R,N1), N is N1+X.
 +</sxh>
 ==== Sudoku ==== ==== Sudoku ====
  
  • cnam/utc503/declarative/prolog.1701908234.txt.gz
  • Dernière modification : il y a 17 mois
  • de jcheron