Created
August 4, 2022 12:13
-
-
Save zdimension/6b7469173cf631e0b3e532cdf865ce26 to your computer and use it in GitHub Desktop.
résolution prolog de problèmes de logique du test psychotechnique du CNED édition 1998
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
adjacent(A, B, List) :- nextto(A, B, List); nextto(B, A, List). | |
solve(AimeVoile) :- | |
length(Garcons, 4), | |
member(garcon(claude, treize, _, _), Garcons), % Claude est âge de treize ans | |
adjacent(garcon(_, _, tennis, _), garcon(_, _, _, policier), Garcons), % Le joueur de tennis s'entretient avec son voisin qui aime par-dessus tout les romans policiers | |
member(garcon(_, onze, nage, _), Garcons), % Le garçon de onze ans est un nageur accompli | |
member(garcon(_, dix, _, aventure), Garcons), % Celui qui préfère les livres d'aventures est âge de dix ans | |
adjacent(garcon(pierre, douze, _, _), garcon(_, _, tennis, _), Garcons), % Pierre, douze ans, parle avec son voisin qui pratique le tennis | |
nth1(1, Garcons, garcon(_, _, _, policier)), % Le joueur placé à l'extrême gauche est celui qui préfère les romans policiers | |
adjacent(garcon(jean, _, _, voyage), garcon(_, _, tennis, _), Garcons), % Jean, qui aime les récits de voyage, se trouve à côté du joueur de tennis | |
nth1(4, Garcons, garcon(paul, _, _, _)), % Paul joue tout à fait à droite | |
( % Celui qui s'intéresse aux livres d'histoire s'entretient avec son voisin de gauche à propos de badminton | |
nextto(garcon(_, _, badminton, _), garcon(_, _, _, histoire), Garcons); | |
nextto(garcon(_, _, _, _), garcon(_, _, badminton, histoire), Garcons) | |
), | |
member(garcon(AimeVoile, _, voile, _), Garcons). % Quel est le nom de celui dont le sport favori est le bateau à voile ? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
adjacent(A, B, List) :- nextto(A, B, List); nextto(B, A, List). | |
:- use_module(library(clpfd)). | |
solve(Resultat) :- | |
length(Personnes, 5), | |
adjacent(pers(architecte, _, _), pers(_, strapontin, _), Personnes), % Un voisin de l'architecte désire un strapontin | |
nth1(3, Personnes, pers(architecte, _, _)), % Deux personnes précèdent l'architecte dans la file | |
nth1(5, Personnes, pers(_, _, dim_soir)), % Le dernier de la file désire assister à la séance du dimanche soir | |
nextto(pers(boulanger, parterre, _), pers(étudiant, _, _), Personnes), % La personne placée devant l'étudiant est boulanger ; il désire un billet pour le parterre | |
nextto(pers(instituteur, _, _), pers(_, _, ven_soir), Personnes), % La personne qui suit l'instituteur désire une place pour le vendredi soir | |
nextto(pers(médecin, _, _), pers(architecte, _, _), Personnes), % Le médecin qui précède l'architecte dit à celui-ci : "Vous ne pouvez obtenir qu'une loge pour la représentation du samedi-après-midi" | |
nextto(pers(_, _, sam_soir), pers(_, _, dim_soir), Personnes), % Celui qui désire voir la séance du samedi soir est placé devant celui uqi désire voir le film le dimanche soir | |
nextto(pers(_, _, dim_aprem), pers(médecin, _, _), Personnes), % Le médecin dit : "La personne qui me précède désire voir le film le dimanche après-midi" | |
member(pers(_, loge, sam_aprem), Personnes), | |
nth1(1, Personnes, pers(_, balcon, _)), % Le premier de la file désire une place au balcon | |
adjacent(pers(boulanger, _, _), pers(_, _, sam_aprem), Personnes), % Un voisin du boulanger désire se rendre à la représentation du samedi après-midi | |
nth1(1, Personnes, pers(instituteur, _, _)), % L'instituteur était arrivé le premier au guichet | |
member(pers(Resultat, X, _), Personnes), % On cherche une personne associée à la place X | |
var(X). % Où X est une variable libre (i.e. la personne n'a pas de contrainte de place) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment