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