• Aucun résultat trouvé

Contrôle Continu

N/A
N/A
Protected

Academic year: 2022

Partager "Contrôle Continu"

Copied!
2
0
0

Texte intégral

(1)

Université Grenoble Alpes

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

Contrôle Continu

Travail à préparer et à rendre

Il vous est demandé de traiter un sujet parmi les 3 sujets proposés. Vous pouvez travailler seul ou en binôme. Votre programme commenté et comportant le nom du ou des auteur(s) doit être envoyé à jean-michel.adam@univ-grenoble-alpes.fr au plus tard le jeudi 2 mai 2019 à 23h59. Vous recevrez une confirmation ; si vous ne recevez pas de confirmation ce n’est pas bon.

Ne vous y prenez pas au dernier moment pour faire votre programme et l’envoyer, il y aura une pénalité de 2 points par jour de retard.

Sujet 1 : Problème de seaux…

Ecrire un programme Prolog qui résout le problème suivant :

Vous disposez de deux seaux, l’un de 5 litres et l’autre de 3 litres. Vous avez aussi à votre disposition un robinet d'eau. Comment faire pour mesurer 4 litres ?

On considère qu’un état du problème est défini par deux entiers : les contenus des deux seaux. Ecrire le prédicat solution/1 qui détermine la liste des états permettant de passer de [0,0] à un état comprenant la valeur 4. Le résultat est donc une liste de listes à 2 éléments représentant le contenu des deux seaux. Par exemple : [[0,0],[5,0],[2,3],... [4,0]].

Initialement, cette liste est vide. Les opérations possibles sont : - remplir le seau 1 (seau de 5 litres)

- remplir le seau 2 (seau de 3 litres) - vider le seau 1 dans le seau 2 - vider le seau 2 dans le seau 1 - vider complètement le seau 1 - vider complètement le seau 2

a) Ecrire le prédicat solution/1, il fera appel à un prédicat solution/2 qui à partir d’une liste intermédiaire d’états, détermine la liste solution.

b) Ecrire le prédicat best_solution/1 qui calcule toutes les solutions possibles, affiche le nombre de solutions trouvées, en sélectionne la plus courte et l’affiche.

Sujet 2 : Le mot le plus long

Ecrire un programme Prolog qui détermine le(s) mot(s) le(s) plus long(s) que l’on peut construire à l’aide de lettres fournies. Il s’agit d’écrire le prédicat motlepluslong/2 qui pour un ensemble de lettres données sous la forme d’un atome, construit la liste des mots les plus longs constructibles à l’aide de ces lettres. Pour réaliser ce programme un fichier comportant tous les mots du français de 3 à 10 lettres nommé dico10l.pl est fourni. Le nombre de lettre fournies pourra éventuellement être limité à 10 lettres.

Exemple d’utilisation :

?- motlepluslong(aelcgumoe,L).

L = [cagoulee, coagulee, emoulage, glaucome].

a) Ecrire le prédicat motlepluslong/2

b) Ecrire un second prédicat trouvermots/1 qui affiche tous les mots de 3 à 10 lettres constructibles avec les lettres données en argument.

(2)

Sujet 3 : Le jeu du pendu

Ecrire un programme Prolog qui joue au jeu du pendu.

Ecrire un programme Prolog qui joue au jeu du pendu. L'utilisateur choisit mentalement un mot et le programme Prolog doit le découvrir en proposant une lettre à chaque tour.

Pour réaliser ce programme un fichier comportant tous les mots du français de 3 à 10 lettres nommé dico10l.pl est fourni.

N'essayez pas de programmer une interface graphique : il suffit juste d'indiquer à chaque fois le nombre d'essais encore possibles. A chaque tour l’ordinateur propose une lettre, et l’utilisateur répond en donnant le mot partiellement construit sous la forme d’une suite de '-' et le lettres, les '-' correspondant aux lettres du mot non encore trouvées.

Si par exemple il faut deviner un mot de 9 lettres, l’utilisateur commencera par introduire la chaine '---' ; si l’ordinateur propose la lettre 'e' et que celle-ci est présente en première et 7ème positions, l’utilisateur doit répondre par la chaine 'e---e-' ; si la lettre proposée n’est pas présente, il suffit de répondre par la même chaîne qu’au tour précédent. L’ordinateur perd un essai chaque fois qu’il ne trouve pas de lettre et il ne triche pas .

Essayez de faire en sorte que votre programme Prolog aille rapidement vers la solution en proposant des lettres qui réduisent au mieux l'espace des possibles.

Pour vous aider à écrire la partie dialogue, voici un exemple de petit dialogue écrit en Prolog :

dialogue:- writeln("Bonjour ! Voulez-vous jouer avec moi ?"), lire_reponse(R), % la réponse R est un atome dialogue(R).

dialogue('non'):- writeln("dommage, peut-être une autre fois, au revoir."),!.

dialogue('oui'):- writeln("super, nous allons bien nous amuser !"),!.

dialogue(R):- reponse(R),

lire_reponse(R1), dialogue(R1).

reponse(bof):- writeln("Il faudrait vous décider..."),

writeln("Voulez-vous jouer avec moi oui ou non ?"),!.

reponse(_):- writeln("Je n'ai pas compris votre réponse. Merci de répondre par oui ou par non."), writeln("Voulez-vous jouer avec moi oui ou non ?").

lire_reponse(R) :-

read_line_to_codes(user_input, Codes), % saisie d'une ligne sous la forme d'une liste de codes UNICODE string_codes(S, Codes), % transforme les caractères saisis en une chaine

string_lower(S,SL), % remplace les majuscules éventuelles par des minuscules string_chars(SL,LC), % transforme la chaine en une liste de caratères

subtract(LC,[' '],LL), % suppression des espaces éventuels de la liste

atom_chars(R,LL). % transforme la liste sans espaces en un atome: la réponse

Références

Documents relatifs

encore mieux cette "inflation" du contraste sanguin sinusoïdal périphérique qui parait correspondre à une stase provoquée par l'hypertrophie des secteurs bien

Il s’agit des cannabinoïdes de synthèse ou «spices», actifs sur les mêmes récepteurs que le cannabis et beaucoup plus puissants que le THC d’origine végétale..

[r]

SUBJECT TITLE: User Interfaces adaptation to users and their environment in a natural risks program PRIMARY SCIENTIFIC DEPARTMENT (LABORATORY’S NAME): LIG (Laboratory of

Énoncer le théorème de Cauchy-Lipschitz pour les équations différentielles linéaires d’ordre

● La médecine et la science au 19e siècle​ Charlotte / Mélanie : https://docs.google.com/presentation/d/1JJqfeQtmJTYeL9MZsYgK-Mc2pewytYK-Vy2832T4NoE/edit#slide=id.p Etape 2 :

L’auteur termine l’ou- vrage en indiquant des prolongements possibles pour l’analyse textuelle des discours, notamment la problématique de l’interaction d’un texte avec les

Le juge pour enfants Édouard Durand a été nommé coprésident de la commission sur l’inceste.. • BRUNO LÉVY/DIVERGENCE POUR LA VIE POUR