J'essaie de résoudre le problème suivant dans Prolog, et je pense que je l'ai bien codé, mais mes requêtes retournent simplement false. Des conseils sur quoi changer? Le problème est le suivant:.Logic Puzzle dans Prolog - en utilisant les listes
« Bagel Alley, le magasin de bagel local, a toujours été un lieu d'activité furieuse pendant le trajet du matin que les gens se sont arrêtés pour obtenir leur café et bagel sur la façon de travailler la fraîcheur Sur le site chaque matin, les bagels étaient très populaires et le fait que le magasin avait aussi du bon café était comme la cerise sur le gâteau! Les personnes qui travaillaient à Bagel Alley étaient gaies et amicales, ainsi que compétentes, donc malgré le fait que Un grand nombre de clients, l'attente n'a jamais été longue ou désagréable Joe et et quatre de ses collègues se sont arrêtés ce matin pour voir ce que tout le monde était ravi et ont été agréablement surpris de constater que le sho p a vécu jusqu'à sa réputation . Déterminer le nom de chaque collaborateur, quel genre de bagel avec son nappage , et quelle saveur et la taille du café (petite, moyenne ou grande) chacun commandés. »
Brad a obtenu son bagel, ce qui n » était pas t de blé, avec rien dessus. Walt commandé un petit café.
les deux collègues qui ont obtenu des cafés de taille moyenne ont été celui qui a la saveur de noisette et celui qui a obtenu son bagel avec du beurre d'arachide .
Celui qui a obtenu le bagel à l'oignon, mais pas avec du beurre, a aussi un café à la vanille française, mais pas la petite taille.
Les cinq collègues de travail étaient Joe, celui qui a obtenu un grand café, celui qui a obtenu le café aromatisé Amaretto, celui qui a obtenu un bagel de blé, et celui qui a obtenu le bacon oeuf & sur son bagel. Rick n'a pas commandé le bagel aux myrtilles, mais il a reçu du café colombien. Le café Amaretto a été commandé avec le bagel cheddar, mais pas par Walt.
Le fromage à la crème n'était pas fourni avec le bagel aux myrtilles mais il était accompagné d'un grand café. Le sésame bagel est venu avec du beurre mais Carlos ne l'a pas commandé.
Le code Prolog je l'ai écrit est ici:
bagels(Sol):-
Sol = [[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_]],
member([brad,X,plain,_,_], Sol), X \== wheat,
member([walt,_,_,small,_], Sol),
member([_,_,_,medium1,hazelnut], Sol),
member([_,_,peanut_butter,medium2,_], Sol),
member([_,onion,Y,Z,french_vanilla], Sol), Y \== butter, Z \== small,
member([joe,Ja,Jb,Jc,Jd], Sol),Ja\==wheat,Jb\==egg_bacon,Jc\==large,Jd==amaretto,
member([La,Lb,Lc,large,Ld], Sol), La\==joe,Lb\==wheat,Lc\==egg_bacon,Ld\==amaretto,
member([Aa,Ab,Ac,Ad,amaretto], Sol), Aa\==joe,Ab\==wheat,Ac\==egg_bacon,Ad\==large,
member([Wa,wheat,Wb,Wc,Wd], Sol), Wa\==joe,Wb\==egg_bacon,Wc\==large,Wd\==amaretto,
member([Ea,Eb,egg_bacon,Ec,Ed], Sol), Ea\==joe,Eb\==wheat,Ec\==large,Ed\==amaretto,
member([rick,R,_,_,columbian], Sol),R\==blueberry,
member([A,cheddar,_,_,amaretto], Sol), A\==walt,
member([_,B,cream_cheese,large,_], Sol), B\==blueberry,
member([C,sesame,butter,_,_], Sol), C \== carlos,
member([_,_,_,other,_], Sol),
member([_,_,_,_,other], Sol).
Je crois que la requête en cours d'exécution "bagels (X)." devrait me donner la solution au problème, mais il renvoie faux. Est-ce que je manque quelque chose? Merci d'avance!
Je vois ... Donc, croyez-vous que le problème est que le problème donné est trop spécifique, et a des erreurs dans la façon dont il est libellé? Je ne sais pas où aller à partir de votre généralisation, car il ne répondrait pas aux exigences du puzzle, à moins que j'ajoute les lignes supprimées. – guypowermister
@guypowermister: Le point de cette généralisation est: Tant que la partie visible restante n'est pas modifié, le problème persistera. Vous devez donc changer quelque chose dans la partie visible restante. – false
Regardez le code restant: la connexion 'amaretto' me semble très étrange! Vous dites: il y a 'joe' avec' amaretto' mais ensuite, il y a quelqu'un qui est ** pas ** 'joe' et ce gars devrait avoir' amaretto', aussi ... – false