• Aucun résultat trouvé

M1Info/BIA/TP1/2007 TP1 PROLOG (PROgrammation LOGique)

N/A
N/A
Protected

Academic year: 2022

Partager "M1Info/BIA/TP1/2007 TP1 PROLOG (PROgrammation LOGique)"

Copied!
1
0
0

Texte intégral

(1)

M1Info/BIA/TP1/2007 TP1 PROLOG

(PROgrammation LOGique)

1. Le site de SWI-Prolog : http://www.swi-prolog.org (15 mn) - Sources et exécutables

- Documentation et manuel de références

2. Pour se familiariser avec Prolog, implémenter et tester les programmes vus en TD (1H) Rappel :

a) Manipulation de listes - Soit L une liste

1. Ecrire un prédicat element(X, L) de deux manières : avec et sans le cut (!), permettant de savoir si X est un élément de la liste L.

2. Ecrire un prédicat renversser(L,LR) permettant de renverser la liste L pour obtenir une liste LR.

3. Ecrire un prédicat compresser(L,LC) permettant de supprimer des doublons consécutifs dans une liste L pour obtenir une liste LC.

b) Coloriage d’une carte

On se propose de définir un prédicat permettant de colorier la carte ci-contre :

Les règles sont les suivantes :

On dispose de trois couleurs qui sont : vert, jaune et rouge ; Deux zones contiguës doivent avoir des couleurs différentes.

Ecrivez un prédicat coloriage(C1, C2, C3, C4) qui

comportera deux parties. La première partie génère toutes les valeurs possibles de C1, C2, C3 et C4. La seconde vérifie si les colorations obtenues sont conformes à la carte. Reprenez ce prédicat, et modifiez le programme en déplaçant les tests de différence de couleurs le plus tôt possible dans l’écriture du prédicat, c’est-à-dire en vérifiant les différences de couleurs dès que celles-ci sont instanciées. Quelle en est la conséquence ?

3. Tapez, testez et expliquez le fonctionnement du programme des Mutants en utilisant la trace (prédicat trace) du raisonnement du moteur de prolog (45mn)

Programme : non_vide([_|_]).

mutant(S) :- animal(D), animal(F), append(Debut,Milieu,D),

non_vide(Debut), non_vide(Milieu), append(Milieu,_,F),

append(Debut,F,M), name(S,M).

animal("alligator").

animal("lapin").

animal("tortue").

animal("pintade").

animal("cheval").

?- consult('c:/mutants.pl').

% c:/mutants.pl compiled 0.00 sec, 1,568 bytes Yes

?- mutant(X).

X = alligatortue ; X = lapintade ; X = chevalligator ; X = chevalapin ; No

?-

NK, ML, AM, CK, BR

C1 C2

C3 C4

Références

Documents relatifs

Reprenez ce prédicat, et modifiez le programme en déplaçant les tests de différence de couleurs le plus tôt possible dans l’écriture du prédicat, c’est-à-dire en

Vous tapez ce programme dans un éditeur de texte simple et sauvegardez dans un fichier « prprog.pl » (par exemple, ou tout autre nom avec le suffixe

Etant données une station de départ et une station d'arrivée, il faut trouver un chemin de l'une à l'autre en précisant les lignes empruntées, les directions

On considère cinq maisons, toutes de couleurs différentes (rouge, bleu, jaune, blanc, vert), dans lesquelles logent cinq professionnels (peintre, sculpteur, diplomate, docteur

Définir le prédicat resoudre(S) qui donne la liste S des opérateurs à appliquer pour passer de l’état initial à l’état final. On va maintenant appliquer le

Les dirigeants de la société de découpe de cuir, désirant alléger le travail de leurs experts, et surtout leur éviter des déplacements trop fréquents en atelier pour des

- Reprenez ce prédicat, et modifiez le programme en déplaçant les tests de différence de couleurs le plus tôt possible dans l’écriture du prédicat, c’est-à-dire

Il s’agit d’un problème classique dont vous devez présenter un programme PROLOG de résolution en déclarant ce qui est doit être vrai dans toute situation et en cherchant quelles