Prolog
Bases de Prolog
Faits: Déclarations simples, par exemple :
parent(anne, bob).
Règles: Formules logiques pour définir des relations, ex :
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
Requêtes: Pour interroger la base, ex :
?- grandparent(anne, Who).
Variables: Elles commencent par une majuscule (ex :
X,Y).
Récursion en Prolog
Concept: Une règle récursive s'appelle elle-même pour traiter des cas répétés.
Exemple classique: Calcul de la longueur d'une liste.
% Cas de base longueur([], 0). % Cas récursif longueur([_|T], N) :- longueur(T, N1), N is N1 + 1.
Récursion terminale: Si le dernier appel d'une fonction est la récursion, ce qui peut optimiser l'exécution.
La coupe (!):
C'est un opérateur qui "coupe" l'exploration de solutions alternatives.
En gros, c'est comme dire "ok, on arrête de chercher d'autres réponses ici".
Exemple simple :
membre(X, [X|_]) :- !. membre(X, [_|T]) :- membre(X, T).
Manipulation de matrices
Pour manipuler des matrices (représentées comme des listes de listes), voici quelques astuces :
Une matrice est [[Ligne1], [Ligne2], ...].
Pour accéder à un élément, on peut définir des prédicats de parcours.
Exemple pour récupérer la première ligne et la première colonne :
% Récupère la première ligne d'une matrice
premiere_ligne([L|_], L).
% Récupère le premier élément d'une liste
premier_element([E|_], E).
% Récupère l'élément en position (0,0) dans une matrice
element_00(Mat, E) :-
premiere_ligne(Mat, L),
premier_element(L, E).