Programmation en Prolog ( puzzle logique )

Fermé
Phataf - 19 juil. 2020 à 03:38
georges97 Messages postés 12614 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 30 novembre 2024 - 19 juil. 2020 à 05:40
Salut,
J'ai un problème en prolog et je voulais solliciter votre aide.
C'est au niveau du prédicat concour.

%Permet de vérifier, si l'élément appartient à la liste.
appart(X,[X|_]).
appart(X,[_|L]):-appart(X,L).

%Détermine le premier élément de la liste.
first(X,[X|_]).

%Permet de déterminer l'ordre dans le classement.
did_better(X,Y,[X|Q]):- appart(Y,Q).
did_better(X,Y,[_|Q]):- did_better(X,Y,Q).


%Tableau des cas possibles.
tableau([friend(N1,C1,S1),friend(N2,C2,S2),friend(N3,C3,S3)]):-
appart(N1,[michael,simon,richard]),
appart(N2,[michael,simon,richard]),
appart(N3,[michael,simon,richard]),
N1 \== N2, N1 \== N3, N2 \== N3,
appart(C1,[australien,israelien,americain]),
appart(C2,[australien,israelien,americain]),
appart(C3,[australien,israelien,americain]),
C1 \== C2, C1 \== C3, C2 \== C3,
appart(S1,[basket,criket,tennis]),
appart(S2,[basket,criket,tennis]),
appart(S3,[basket,criket,tennis]),
S1 \== S2, S1 \== S3, S2 \== S3.

%Pour déduire les résultats finals.
concour(Tableau):-
tableau(Tableau),
appart(friend(michael,C1,basket),Tableau),
did_better(friend(michael,C1,basket),friend(N3,C3,americain),Tableau),
appart(friend(simon,israelien,S2),Tableau),
did_better(friend(simon,israelien,S2),friend(N3,C3,tennis),Tableau),
first(friend(N2,C2,cricket),Tableau),
N2 \== null, C2 \== null.

1 réponse

georges97 Messages postés 12614 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 30 novembre 2024 2 420
19 juil. 2020 à 05:40
Bonjour,

doublon

https://forums.commentcamarche.net/forum/affich-36763641-programme-prolog-puzzle-logiqu
0