1/ Programmation impérative en Prolog : Le jeu des tours de ... - Free

1/ Programmation impérative en Prolog : Le jeu des tours de Hanoi. Analyse du
sujet : Les tours de Hanoï sont un problème classique de récursivité. Le but est ...

Part of the document


Poulet Thibault (p0300693)
Pellier Damien (p0304005)


TP 3_4 PROLOG



1/ Programmation impérative en Prolog : Le jeu des tours de Hanoi


Analyse du sujet : Les tours de Hanoï sont un problème classique de
récursivité. Le but est de déplacer les N-1 premier disques sur le socle
C et ensuite il faut déplacer le dernier disque, le plus grand non placés,
sur le socle B. On réitère ensuite l'opération en déplacant les N-2
premiers disques du socle C sur le socle A et de déplacer le dernier disque
du socles de C sur le socle B, et ainsi de suite.

hanoi(N) :- deplacer(N,a,b,c).

deplacer(1,X,Y,_) :- write('Deplacement du disque du socle '),
write(X),
write(' vers le socle '),
write(Y),
nl.

deplacer(N,X,Y,Z) :- N>1,
M is N-1,
deplacer(M,X,Z,Y),
deplacer(1,X,Y,_),
deplacer(M,Z,Y,X).

Programmation par rapport au sujet : Nous avons traité l'ensemble du sujet
par récursivité, nous n'avons pas trouvé de problèmes ou d'éventuel
« bug ».

Questions posées/Choix : Nous n'avons pas rencontré de problèmes au niveau
de la conception. Nous avons choisi de concevoir cette solution par
récursivité grâce à une fonction « deplacer ».

Jeux d'essai :

Déplacement d'un disque :

[pic]

Déplacement de deux disques :

[pic]








Déplacement de quatre disques :

[pic]

2/ Un SBC en PROLOG : L'agence de voyage


Analyse du sujet :


2.1/Donner les clauses qui décrivent ce catalogue.


ville(londres).
ville(rome).
ville(tunis).

hebergement(hotel).
hebergement(camping).
hebergement(chez_habitant).

cout_transport(londres, 123).
cout_transport(tunis, 231).
cout_transport(rome, 321).

cout_sejour(londres,camping,1234).
cout_sejour(londres,hotel,4321).
cout_sejour(londres,chez_habitant,2134).
cout_sejour(rome,camping,4567).
cout_sejour(rome,hotel,7654).
cout_sejour(rome,chez_habitant,5467).
cout_sejour(tunis,camping,9876).
cout_sejour(tunis,hotel,7896).
cout_sejour(tunis,chez_habitant,6579).

2.2/ Exprimer la relation voyage(V,D,H,C) qui s'interprète par : le
voyage dans la ville V pendant D semaines avec l'hébergement H coûte C
euros.

voyage(V,D,H,C) :- ville(V), hebergement(H),
cout_transport(V , P), cout_sejour(V, H, M), C is M*D+P.

2.3/ Compléter par voyage_eco(V,D,H,C,Cmax) qui exprime que le coût
est inférieur à Cmax euros.


voyage_eco(V,D,H,C,Cmax) :- voyage(V,D,H,C), C