Ton meilleur ami se marie et t'a demandé d'être son organisateur de mariage. Tu as accepté, même si tout ce que tu sais sur le sujet vient d'un film... Tout se passait bien, jusqu'à ce que tu t'attaques au plan de table.
Cinq invités seront présents, assis autour d'une grande table ronde. Voici la liste des invités :
Ton objectif est de trouver une disposition des places où chacun est content de ses voisins. Tu ne connais pas tout le monde aussi bien que tu le voudrais, mais voici ce que tu sais :
Les personnes qui s'apprécient peuvent être assises l'une à côté de l'autre, mais seulement si c'est réciproque. Les personnes bavardes s'intègrent facilement et peuvent être assises à côté de n'importe qui.
Maintenant que tu as tous ces détails, il est temps d'esquisser un plan de table !
Ta tâche consiste à trouver la disposition idéale des places à table. Pour cela, tu vas déclarer des faits (des choses qui sont toujours vraies) et des règles (des choses qui sont vraies sous certaines conditions).
Définis le fait chatty pour représenter les personnes bavardes.
Le fait chatty prend un seul argument : le nom en minuscules de la personne bavarde.
chatty(gustavo).
true.
Définis le fait likes pour représenter qui aime bien qui.
Le fait likes prend deux arguments :
likes(esteban, malena).
true.
Définis la règle pairing comme vraie lorsque chacune des deux personnes aime bien l'autre.
La règle pairing prend deux arguments :
pairing(malena, esteban).
true.
Définis la règle pairing comme vraie lorsqu'au moins une des deux personnes mises en paire est bavarde.
pairing(valeria, jaime).
true.
Définis la règle seating comme vraie lorsque les cinq paires sont de bonnes paires.
La règle pairing prend cinq arguments :
Utilise les faits et les règles que tu viens de définir pour vérifier la disposition des places.
seating(esteban, jaime, gustavo, malena, valeria).
false.
Inscris-toi sur Exercism pour apprendre et maîtriser Prolog avec 109 exercices, et un vrai mentorat humain, le tout gratuitement.