Prolog

Fermé
Biecoul Messages postés 2 Date d'inscription mercredi 30 mai 2018 Statut Membre Dernière intervention 6 juin 2018 - 30 mai 2018 à 01:37
Biecoul Messages postés 2 Date d'inscription mercredi 30 mai 2018 Statut Membre Dernière intervention 6 juin 2018 - 6 juin 2018 à 22:47
J'ai un problème prolog qui tourmente depuis un moment et je n'arrive pas à trouver la solution. Je serais ravis si quelqu'un peut m'aider.

Voici le l'énoncé :
Trois amis se retrouvent premier, second et troisième dans un concours de programmation
- Chacun des trois a un prénom différent, aime un sport différent et est de nationalité
différente.
- Michael aime le basket et a fait mieux que l’américain.
- Simon l’israélien , a fait mieux que le tennisman .
- Le joueur de cricket était premier.
Qui est l’australien? Quel est le sport pratiqué par Richard?
Pour résoudre cette enigme sous Prolog, on pourra commencer par instancier les valeurs
d’une structure de données convenable.
Chaque personne a trois attributs, et peut être représentée par la structure
friend(Name,Country,Sport).
Il y a trois amis dont l’ordre dans le concours est significatif. Ceci suggère une suite ordonné
de trois éléments comme structure pour le problème , c’est à dire la liste :
[friend(N1,C1,S1),friend(N2,C2,S2),friend(N3,C3,S3)]
On pourra ensuite écrire d’autres programmes comme did-better , name , nationality,
sport et first.

2 réponses

baladur13 Messages postés 46776 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 3 octobre 2024 13 382
30 mai 2018 à 14:48
Bonjour,
Nous ne ferons pas votre exercice à votre place.
Merci de décrire précisément votre problème et en postant le code déjà réalisé.

Cliquez ici pour des conseils d'écriture des messages et ici concernant les devoirs scolaires ou PFE.

Pour poster votre code, merci de penser à la coloration syntaxique.
0
Biecoul Messages postés 2 Date d'inscription mercredi 30 mai 2018 Statut Membre Dernière intervention 6 juin 2018
6 juin 2018 à 22:47
voici ce que j'ai écris. Mais avec technique, le programme ne résout pas vraiment le problème mais on lui renseigne les solutions. Ce que je voulais c'est que le programme resout le problème. Exple : qu'il trouve que la nationalité de simon est israel et son sport est le cricket..

nationality(simon,israel).
nationality(richard,amerique).
nationality(michael,australie).

sport(michael,basket).
sport(simon,cricket).
sport(richard,tennis).

friend(michael,australie,basket).
friend(simon,israel,cricket).
friend(richard,amerique,tennis).

name(richard).
name(simon).
name(michael).

didbetter(simon, michael).
didbetter(michael, richard).
didbetter(simon, richard).

ordre([friend(N1,C1,S1),friend(N2,C2,S2),friend(N3,C3,S3)]):-N1=simon,C1=israel,S1=cricket,N2=michael,C2=australie,S2=basket,N3=richard,C3=amerique,S3=tennis.

first(X):-didbetter(X,Y),didbetter(X,Z),didbetter(Y,Z).

0