"Vieux motard, que j'aimais !"
Je le vois bien avec une grande toile d'araignée sur son clavier.
En plus j'ai pourri le TP du prof de Prolog, mais il est peut-être en retraite, dans ce cas le nouveau devra faire preuve d'imagination ;-)
"Vieux motard, que j'aimais !"
Je le vois bien avec une grande toile d'araignée sur son clavier.
En plus j'ai pourri le TP du prof de Prolog, mais il est peut-être en retraite, dans ce cas le nouveau devra faire preuve d'imagination ;-)
J'en mets une dernière en Prolog moderne pour ceux qui comme moi tomberons par hasard sur cette discussion.
Les personnes et les jeux sont représentés par des entiers distincts.
Les indices sur les âges servent à classer les personnes du plus jeune au plus vieux.
Il n'y a plus qu'une seule clause, que l'on résout avec le système de résolution de contraintes CLPFD.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 :- use_module(library(clpfd)). solution(Pairs, Jeux, Vs) :- Table = [Personnes, Jeux], Personnes = [Fernand, Luc, Paul], Noms = [fernand, luc, paul], Jeux = [JeuA, _, JeuC], pairs_keys_values(Pairs, Personnes, Noms), maplist(all_distinct, Table), append(Table, Vs), Vs ins 1..3, Fernand #> Luc, % Indice 1 JeuC #= 2, % Indice 2 Paul #> 1, Paul #= JeuA. % Indice 3 /** ?- solution(Pairs, [JeuA, JeuB, JeuC], _Vs). JeuA = 3, JeuB = 1, JeuC = 2, Pairs = [2-fernand, 1-luc, 3-paul] Ce qui signifie : #1 : Luc a 5 ans et joue au jeuB . #2 : Fernand a 7 ans joue au jeuC. #3 : Paul a 9 ans et joue au jeauA. */
Partager