| 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] jcheron | cnam:utc503:declarative:prolog [2023/12/07 01:30] (Version actuelle) – [Listes] jcheron |
|---|
| </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 ==== |
| |