• Aucun résultat trouvé

TD Programmation Logique n°2 Exercice 1 On dispose de faits décrivant les notes d'étudiants dans 3 matières : maths, informatique et anglais. Par exemple : note(dupont,maths,8).

N/A
N/A
Protected

Academic year: 2022

Partager "TD Programmation Logique n°2 Exercice 1 On dispose de faits décrivant les notes d'étudiants dans 3 matières : maths, informatique et anglais. Par exemple : note(dupont,maths,8)."

Copied!
2
0
0

Texte intégral

(1)

Page 1 sur 2

Université Grenoble Alpes

U.F.R. Sciences de l’Homme et de la Société

Licence MIASHS 2ème année

TD Programmation Logique n°2

Exercice 1

On dispose de faits décrivant les notes d'étudiants dans 3 matières : maths, informatique et anglais. Par exemple :

note(dupont,maths,8).

note(dupont,anglais,14).

note(dupont,informatique,9).

note(legrand,anglais,12).

...

En créant un prédicat moyenne/2, écrire le prédicat mention/2 qui détermine la

mention d'un étudiant donné. Celle-ci est déterminée à partir de la moyenne des 3 notes.

Par exemple :

?- mention(dupont,M).

M=passable Exercice 2

Ecrire le prédicat pgcd/3 qui détermine le PGCD de deux nombres. On utilisera la relation de récurrence suivante :

pgcd(x,y)=pgcd(y, x mod y) pgcd(x,0)=x

Exercice 3

Soit la base de connaissance suivante : not(existe(dieu)).

existe(dieu).

Quel réponse donnera Prolog aux requêtes suivantes ?

?- existe(dieu).

?- \+ existe(dieu).

?- not(existe(dieu)).

?- \+ existe(diable).

Exercice 4

Soit la base de connaissance suivante : aime(marie,jean).

aime(marie,paul).

aime(jean,marie).

a) Donnez une définition du prédicat amourExclusif/2 qui dit que X aime exclusivement Y si et seulement si X aime Y et Y est unique.

b) Donnez une définition du prédicat amourFusionel/2 qui réussit si X aime exclusivement Y et si Y aime exclusivement X.

Exercice 5 : L’âge du père et de son enfant On considère le problème suivant :

« L’an dernier, mon père avait le double de mon âge. Cette année, nos deux âges s’expriment par les deux mêmes chiffres compris entre 1 et 9 inclus, mais écrits dans un ordre différent. Aucun de nous deux n’a atteint les 100 ans. Quel est l’âge de mon père et quel est mon âge ? »

Ecrire un petit programme Prolog qui résout ce problème. On définira le prédicat ages/2 qui détermine les âges du père et son enfant.

(2)

Page 2 sur 2 Exercice 6 : Fonctionnement de Prolog

On considère le programme Prolog suivant : r(3,2).

r(X,Y) :- a(X), b(Y), not(X=Y).

r(X,X) :- a(X), b(X).

a(X):- nonvar(X), X mod 3 =:=0, Y is X+1, b(Y).

a(3).

a(2).

b(1).

b(X):- nonvar(X), X mod 2 =:=0.

nonvar(X) réussit si X est instanciée, et échoue sinon.

a) Quelles sont toutes les solutions pour X à la requête a(X) ? b) Quelles sont toutes les solutions pour X et Y à la requête r(X,Y) ? c) Quelle est la réponse de Prolog aux requêtes :

?- a(0).

?- a(6).

?- a(9).

Exercice 7 : Le motard

Un motard veut offrir une moto identique à chacune de ses petites amies. Le nombre représentant le coût de l’opération est, si l’on inverse tous les chiffres, celui qui

représente le prix d’une seule moto. On sait par ailleurs que le motard en question a au moins deux petites amies, mais pas plus de huit. Le prix de la moto offerte se situant entre 10 000 et 99 999 euros, combien le motard a-t-il de petites amies et quel est le prix d’une moto ? Ecrire un programme prolog qui résout ce problème.

Exercice 8 : Cryptarithme

Ecrire un programme Prolog qui résout le problème suivant : S E N D

+ M O R E --- = M O N E Y

Chaque lettre est associée de manière unique à un chiffre. Pour cela, on pourra utiliser le prédicat suivant pour définir les chiffres :

chiffre(X) :- between(0,9,X).

Exercice 9

Ecrire le prédicat nieme(N,L,X) qui est vrai si X est le Nième élément de la liste L. Par exemple :

?- nieme(2,[3,4,5,6],X).

X=4.

Exercice 10

Ecrire le prédicat Prolog nb(L,Min,Max,N) qui détermine le nombre N d'éléments d'une liste L appartenant à l’intervalle de valeurs [Min,Max]. Le premier argument est la liste, le second est la borne inférieure Min, le troisième est la borne supérieure Max et le dernier est le résultat.

?- nb([4,1,7,3,9,11,6],4,9,N).

N=4

Références

Documents relatifs

objets complexes, description à l'aide d'un terme composé : (symbole fonctionnel suivi de la liste parenthèsée des arguments)

La droite (AB) est la tangente à la représentation graphique de la fonction f au point B ; déterminer une équation de cette droite.. Calculer en fonction de x l'aire du

Signet

TD analyse technologique page 1/4 Boite de vitesse de moto - SUJET Sib banque PT 2006. La cha îne de transmission de puissance est

Ecrire le prédicat multListe/3 qui, étant donné une liste d’entiers et un coefficient, détermine une nouvelle liste dans laquelle tous les nombres de la première liste ont été

Par exemple, le 5e fait définit un carnivore comme un mammifère mangeant de la viande et carnivore est lui-même utilisé dans le 8e

´ Ecrire un pr´edicat qui prend en entr´ee un ´el´ement et deux listes et qui est vrai si la deuxi`eme liste peut ˆetre obtenue par une quelconque insertion de l’´el´ement dans

´ Ecrivez un pr´edicat qui calcule le plus petit entier qui peut s’´ecrire, de deux mani`eres diff´erentes, comme la somme des cubes de deux entiers (ce nombre est inf´erieur