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:06] – [Exercice] jcheroncnam:utc503:declarative:prolog [2023/12/07 01:30] (Version actuelle) – [Listes] jcheron
Ligne 189: Ligne 189:
 </WRAP> </WRAP>
  
-==== Sudoku ====+==== 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 ===
  
-Base de connaissances : 
 <sxh prolog> <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 ====
 +
 +=== Base de connaissances : ===
 +
 +<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 219: Ligne 304:
 </sxh> </sxh>
  
-Résolution+=== Résolution === 
 <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> </sxh>
  • cnam/utc503/declarative/prolog.1701907591.txt.gz
  • Dernière modification : il y a 21 mois
  • de jcheron