Bonjour,
"Mon" programme fail mais je comprends pas vraiment pourquoi. J'ai jamais vraiment compris ce langage
C'est le 4- qui marche pas, le reste marche bien.
Le problème vient du predicat resol/1 dans le predicat particulier/1 à ce que je vois, mais vraiment aucune idée de pourquoi, vu qu'il marche bien tout seul.
Mon objectif c'est de résoudre les questions particulière en fin de page, ici ("qui boit l'eau" et "qui eleve le zebre") de l'intégramme des 5 maisons.
voici le programme :
%4-
particulier(R):- resol(R), precis(R).
precis([]):- !.
precis([T|Q]):- qui((_,_,_,eau,_),T,T), precis(Q).
qui(X,[X|_],L):- !.
qui(X,[_|Q],L):- qui(X,Q,L).
%3-
resol(R):- rue(5,R),
indice1(R),
indice2(R),
indice3(R),
indice4(R),
indice5(R),
indice6(R),
indice7(R),
indice8(R),
indice9(R),
indice10(R),
indice11(R),
indice12(R),
indice13(R),
indice14(R),
question1(R),
question2(R).
rue(0,[]):- !.
rue(N,[(_,_,_,_,_)|Q]):- N1 is N-1, rue(N1,Q).
maison(1,T,[T|_]):- !.
maison(N,X,[_|Q]):- N1 is N-1, maison(N1,X,Q).
%1&2
%indice(couleur,nationalité,animal,boisson,metier)
indice1([(rouge,anglais,_,_,_)|_]).
indice1([_|Q]):- indice1(Q).
indice2([(_,espagnol,chien,_,_)|_]).
indice2([_|Q]):- indice2(Q).
indice3([(_,islandais,_,_,ingenieur)|_]).
indice3([_|Q]):- indice3(Q).
indice4([(vert,_,_,cafe,_)|_]).
indice4([_|Q]):- indice4(Q).
indice5([(vert,_,_,_,_),(blanche,_,_,_,_)|_]).
indice5([_|Q]):- indice5(Q).
indice6([(_,_,ane,_,sculpteur)|_]).
indice6([_|Q]):- indice6(Q).
indice7([(jaune,_,_,_,diplomate)|_]).
indice7([_|Q]):- indice7(Q).
indice8(R):- maison(1,(_,norvegien,_,_,_),R).
indice9([(_,_,_,_,medecin),(_,_,renard,_,_)|_]).
indice9([(_,_,renard,_,_),(_,_,_,_,medecin)|_]).
indice9([_|Q]):- indice9(Q).
indice10([(_,_,_,_,diplomate),(_,_,cheval,_,_)|_]).
indice10([(_,_,cheval,_,_),(_,_,_,_,diplomate)|_]).
indice10([_|Q]):- indice10(Q).
indice11(R):- maison(3,(_,_,_,lait,_),R).
indice12([(_,slovene,_,the,_)|_]).
indice12([_|Q]):- indice12(Q).
indice13([(_,_,_,jus,violoniste)|_]).
indice13([_|Q]):- indice13(Q).
indice14([(_,norvegien,_,_,_),(bleu,_,_,_,_)|_]).
indice14([(bleu,_,_,_,_),(_,norvegien,_,_,_)|_]).
indice14([_|Q]):- indice14(Q).
question1([(_,_,_,eau,_)|_]).
question1([_|Q]):-question1(Q).
question2([(_,_,zebre,_,_)|_]).
question2([_|Q]):-question2(Q).