• 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 - Partie Prolog

Examen 2e session - 07/09/2006 - 1h00

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.

Partie Prolog

1 Résolution (3 points)

Soitpred/2un prédicat défini de la façon suivante : pred(_,[],[],[]).

pred(P,[X|R],[X|LG],LD) :- X=<P, pred(P,R,LG,LD).

pred(P,[X|R],LG,[X|LD]) :- X>P, pred(P,R,LG,LD).

1. Soit le but pred(4,[5,7,5,3],L1,L2).. 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écidatpred?

2 Arbres (7 points)

On veut manipuler à l’aide de listes des arbres binaires étiquetés par des entiers (on utilise bien des listes, et non des foncteurs comme feuille ou nœud). 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édicatpostfixe, d’arité 2, qui réussit si le deuxième paramètre est la liste des nœuds de l’arbre lors d’un parcours postfixé (traiter le nœud gauche, puis le nœud droit, puis la racine).

2. Écrire un prédicatniveau, d’arité 3, qui réussit si le troisième paramètre est la liste des nœuds de l’arbre donné en deuxième paramètre situés au niveau (ou à la profondeur) de l’entier donné en premier paramètre.

3. En utilisant le prédicathauteur vu en TD, écrire un prédicat largeur, d’arité 2, qui réussit si le deuxième paramètre est la liste des nœuds de l’arbre lors d’un parcours en largeur (traiter les nœuds du niveau, puis ceux du niveau en dessous etc).

2

(3)

3 Éléments de correction

Exercice 1 : Résolution

Question 1.1 : une seule branche, réussite.

Question 1.2 :predréussit si les troisième et quatrième paramètres sont respec- tivement la liste des éléments du deuxième paramètre inférieurs ou égaux au premier paramètre et la liste des éléments du deuxième paramètre strictement supérieurs au premier paramètre.

Exercice 2 : Arbres

Question 2.1 :

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

postfixe([X,G,D],R) :- postfixe(G,L),postfixe(D,M),append(L,M,T),append(T,[X],R).

Question 2.2 :

niveau(0,[X,_,_],[X]).

niveau(0,X,[X]) :- integer(X).

niveau(I,X,[]) :- integer(X),I>0.

niveau(I,[_,G,D],R) :- I>0,J is I-1,niveau(J,G,R1),niveau(J,D,R2),append(R1,R2,R).

Question 2.3 :

max(X,Y,Z) :- X > Y, !, Z = X.

max(_,Y,Y).

hauteur(X,0) :- integer(X).

hauteur([_,G,D],H) :- hauteur(G,H1),hauteur(D,H2),max(H1,H2,T),H is T+1.

largeur(H,A,L) :- hauteur(A,H), niveau(0,A,L),!.

largeur(I,A,L) :- J is I+1, niveau(I,A,S), largeur(J,A,R), append(S,R,L).

larg(A,R) :- largeur(0,A,R).

3

Références

Documents relatifs

Écrire un prédicat crypto(?list) qui réussit si la liste contient les chiffres correspondant aux lettres du cryptogramme et si ces chiffres vérifie la relation.. 3 Préfixe

Écrire un prédicat feuilles, 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é

Écrire un prédicat intersection(+list,+list,?list) qui réussit si la troisième liste est l’intersection des deux premières (c’est-à-dire contient les éléments communs aux

Écrire la spécification du paquetage DateComplete, sous-paquetage du paquetage Date, ajoutant au type Date le nom du jour en définissant un type DateComplete qui hérite de Date

Écrire un programme de test qui crée deux Ensemble et affiche leur union et leur

Une requête de connection au serveur peut échouer parce que le serveur répond qu'il est trop occupé pour accorder de nouvelle connection (FTP et HTTP confondues), soit parce que

Construire le diagramme de classes modélisant la situation suivant : un contrat d'édition est un accord entre un auteur et un éditeur au sujet d'un ouvrage.. Un auteur peut

Construire le diagramme d'activités correspondant au texte suivant extrait d'un mode d'emploi d'un meuble en kit à monter soi-même : L'assemblage n'est possible