Ich versuche, das folgende Problem in Prolog zu lösen, und ich denke, ich habe es richtig codiert, aber meine Abfragen geben einfach falsch zurück. Irgendwelche Ratschläge, was man ändern sollte? Das Problem ist, wie folgt:.Logic Puzzle in Prolog - mit Listen
„Bagel Alley, der lokale Bagel-Shop, war immer ein Ort der wütenden Aktivität während des morgens auf dem Weg, wie Menschen zu arbeiten gestoppt, indem zu ihrem Kaffee und Bagel auf dem Weg Frisch gemacht Vor Ort jeden Morgen, die Bagels waren sehr beliebt und die Tatsache, dass das Geschäft hatte auch großen Kaffee war wie Zuckerguss auf dem Kuchen! Die Leute wer bei Bagel Alley arbeitete waren fröhlich und freundlich, sowie kompetent, so trotz der Eine große Menge an Kunden, die Wartezeit war nie lang oder unangenehm. "Joe und vier seiner Mitarbeiter stoppte an diesem Morgen um zu sehen, was alle schwärmten und waren angenehm überrascht, dass die sho p hat seine Reputation bis zum erreicht. Bestimmen Sie den Namen der einzelnen Mitarbeiter, welche Art von Bagel mit seinem Topping, und was Geschmack und Größe Kaffee (klein, mittel oder groß), die jeweils bestellt.“
Brad bekam seinen Bagel, die wasn‘ t Weizen, mit nichts drauf. Walt bestellen einen kleinen Kaffee.
die beiden Mitarbeiter, die mittelgroße Kaffee bekam derjenige war, der den Haselnuss-Geschmack bekam und derjenige, der seine Bagel bekam mit Erdnuss Butter.
Wer den Zwiebelbagel aber nicht mit Butter bekam, bekam auch ein französischer Vanillekaffee, aber nicht die kleine Größe.
Die fünf Mitarbeiter waren Joe, derjenige, der einen großen Kaffee bekam, derjenige, der Amaretto aromatisierten Kaffee bekam, derjenige, der einen Weizen Bagel bekam, und derjenige, der auf seinem Bagel Ei & Speck bekam.
Rick hat den Blaubeer-Bagel nicht bestellt, aber er hat kolumbianischen Kaffee bekommen. Der Amaretto-Kaffee wurde mit dem Cheddar Bagel aber nicht von Walt bestellt.
Der Frischkäse war nicht mit dem Blaubeer Bagel, aber es kam mit einem großen Kaffee. Der Sesambagel kam mit Butter aber Carlos bestellte es nicht.
Der Prolog Code, den ich geschrieben habe, ist hier:
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).
Ich glaube, dass die Abfrage ausgeführt wird "Bagels (X)." sollte mir die Lösung für das Problem geben, aber es gibt falsch zurück. Fehle ich etwas? Vielen Dank im Voraus!
Ich sehe ... Also glauben Sie, dass das Problem ist, dass das gegebene Problem zu spezifisch ist, und hat Fehler in der Art, wie es formuliert ist? Ich bin nicht sicher, wohin ich von Ihrer Verallgemeinerung gehen soll, da es die Anforderungen des Puzzles nicht erfüllen würde, wenn ich die entfernten Zeilen nicht wieder hinzufüge. – guypowermister
@guypowermister: Der Sinn dieser Verallgemeinerung ist: Solange der verbleibende sichtbare Teil nicht ist modifiziert, bleibt das Problem bestehen. Sie müssen also etwas im verbleibenden sichtbaren Teil ändern. – false
Schauen Sie sich den restlichen Code an: die 'Amaretto'-Verbindung sieht mir sehr komisch aus! Du sagst: Es gibt 'Joe' mit' Amaretto', aber dann gibt es jemanden, der ** nicht ** 'Joe' ist und dieser Typ sollte auch' Amaretto' haben ... – false