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:07] – [Sudoku] jcheroncnam:utc503:declarative:prolog [2023/12/07 01:30] (Version actuelle) – [Listes] jcheron
Ligne 189: Ligne 189:
 </WRAP> </WRAP>
  
 +==== Récursivité ====
 +=== Liste des nombres de N à 1 ===
 +<sxh prolog>
 +/* de N à 1 */
 +decroissant(0).
 +decroissant(N) :- N>0, write(N), nl, N1 is N-1, decroissant(N1).
 +</sxh>
 +=== Liste des nombres de 1 à N ===
 +<sxh prolog>
 +/* de 1 à N */
 +croissant(0).
 +croissant(N) :- N>0, N1 is N-1, croissant(N1), write(N), nl.
 +</sxh>
 +
 +=== Nombres pairs ===
 +
 +<sxh prolog>
 +pair(0).
 +pair(X) :- X>0, X2 is X-2, pair(X2).
 +</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 ====
  
 === Base de connaissances : === === Base de connaissances : ===
  
-<sxh prolog>+<sxh prolog;title:sudoku.pl>
 sudoku(Rows) :- sudoku(Rows) :-
         length(Rows, 9), maplist(same_length(Rows), Rows),         length(Rows, 9), maplist(same_length(Rows), Rows),
Ligne 223: Ligne 307:
  
 <sxh prolog;gutter:false> <sxh prolog;gutter:false>
 +use_module(library(clpfd)).
 +[sudoku].
 problem(1, Rows), sudoku(Rows), maplist(portray_clause, Rows). problem(1, Rows), sudoku(Rows), maplist(portray_clause, Rows).
 </sxh> </sxh>
  • cnam/utc503/declarative/prolog.1701907621.txt.gz
  • Dernière modification : il y a 17 mois
  • de jcheron