• Aucun résultat trouvé

Licence Informatique 3

N/A
N/A
Protected

Academic year: 2021

Partager "Licence Informatique 3"

Copied!
3
0
0

Texte intégral

(1)

Licence Informatique 3 e année Langages de Programmation II

Examen - 22/06/2006 - 2h00

Les notes de cours et de TD sont autorisées. Il sera tenu compte pour la notation de la qualité de rédaction et de la lisibilité des copies. Le barême est donné à titre indicatif.

1 Prédicat mystère (7 points)

Soientpred1/2etpred2/2des prédicats définis de la façon suivante : pred1([],_).

pred1([X|L],[X|L1]) :- pred1(L,L1).

pred2([_],[]) :- fail.

pred2([X|L],[X|M]) :- pred1(L,M).

pred2([X|L],[_|M]) :- pred2([X|L],M).

1. Soit le but pred2([5,7],[5,5,7,8]).. Construire l’arbre de recherche parcouru par l’interpréteur Prolog lors de la résolution de ce but.

2. Quel est le sens du précidatpred1? Du prédicatpred2?

2 Arbres en listes (8 points)

On veut manipuler à l’aide de listes des arbres binaires étiquetés par des entiers. Une feuille est représentée par un entier. Un nœud est représenté par une liste[i,g,d]où i est un entier, et où g et d sont des arbres. Par exemple, [2,[4,[5,1,7],6],[9,30,[15,7,2]]]représente l’arbre de la figure.

1

(2)

2

4 9

5 6

1 7

30 15

7 2

1. Écrire un prédicatest_arbre, d’arité 1, qui réussit si le paramètre est un arbre binaire étiqueté par des entiers.

2. Écrire un prédicatfeuilles, d’arité 2, qui réussit si le deuxième paramètre est la liste des feuilles du premier paramètre, qu’on supposera être un arbre binaire étiqueté par des entiers.

3. Écrire un prédicatsous_arbre, d’arité 2, qui réussit si le premier para- mètre est un sous-arbre du deuxième paramètre, qui est supposé être un arbre. On considére qu’un arbre est sous-arbre de lui-même.

3 Coupure au paradis (5 points)

On définit le prédicatnb_parentsde la façon suivante : nb_parents(eve,0) :- !.

nb_parents(adam,0) :- !.

nb_parents(_,2).

1. Quel type de coupure est utilisé ici : rouge ou verte? Réponse à justifier!

2. Le prédicatnb_parentspeut-il est utilisé correctement en mode (+,+)?

En mode (+,-)? Réponses à justifier aussi!

3. Proposer une modification du programme pour qu’il fonctionne correcte- ment en mode (+,+) et (+,-).

2

(3)

4 Éléments de correction

Exercice 1 : Prédicat mystère

Question 1.1 : trois branches, 2 échecs, une réussite.

Question 1.2 : pred1 réussit si le premier paramètre est une liste préfixe du deuxième paramètre. pred2 réussit si le premier paramètre est une liste conte- nue dans la deuxième.

Exercice 2 : Arbres en listes Question 2.1 :

est_arbre(X) :- integer(X).

est_arbre([X,G,D]) :- integer(X),est_arbre(G),est_arbre(D).

Question 2.2 :

feuilles(X,[X]) :- integer(X).

feuilles([_,G,D],L) :- feuilles(G,L1),feuilles(D,L2),append(L1,L2,L).

Question 2.3 : sous_arbre(S,S).

sous_arbre(X,[_,G,_]) :- sous_arbre(X,G).

sous_arbre(X,[_,_,D]) :- sous_arbre(X,D).

Exercice 3 : Coupure au paradis

Question 3.1 : la coupure est rouge car si on enlève une des deux coupures, le résultat n’est plus le même (par exemple nb_parents(eve,X) renverra YES X=0 ou X=2 alors qu’avec les coupures, ce but renverra uniquement YES X=0).

Question 3.2 : ce prédicat ne fonctionne pas correctement en mode (+,+) (par exemple nb_parents(eve,2) renvoie vrai). Il fonctionne correctement en mode (+,-) car quelque soit la valeur donnée en premier paramètre (eve, adam ou autre chose), la valeur affectée au deuxième paramètre par Prolog sera correcte.

Question 3.3 : modification possible nb_parents2(eve,0).

nb_parents2(adam,0).

nb_parents2(X,2) :- X \= eve, X \= adam.

3

Références

Documents relatifs

1) La définition d'une référence permet d'attribuer un nouveau nom à un objet existant déjà. 2) La définition d'une référence ressemble à celle d'une variable dont le nom

Remarquer que la suite des valeurs prises par les variables R N est croissante et déduire des questions précédentes qu'elle converge presque sûrement vers 1.. Nombre de tentatives

On montre ainsi récursivement que, en moyenne, les nombres de tentatives séparant les diérents records successifs sont de plus en plus élevés.. Conclusion : tout record sera battu,

HTML 4.01/ XHTML sont ainsi utilis´ees seulement pour structurer le document, et les feuilles de styles ou CSS en anglais (Cascading Style Sheets) doivent ˆetre utilis´ees pour

FEUILLES POUR DESSINER. Feuilles pour dessiner Feuilles

JE DISTRIBUE LES FEUILLES. Je distribue les feuilles Je distribue

Si l’intérêt principal n’est pas l’estimation de la densité mais la discrimination, des méthodes alternatives du choix de À à partir du point de vue de la

2- Déterminer lequel des 4 états de contrainte est le plus dangereux, le moins dangereux, justifier vos réponses ; 3- Calculer dans chaque cas la valeur de σ 12 entrainant