Ich muss eine predicate/2
machen, die eine Liste von "richtigen" Zahlen als Validierung und eine Funktion, die validiert werden muss. Die Zahlen in der Funktion (dargestellt als number(X)
) müssen mit den Zahlen in der Validierungsliste übereinstimmen, um "wahr" zu werden.Prolog. Kombinieren Prädikate
Ich habe kein Problem, zwei getrennte predicates/1
, die die richtige Antwort geben, wenn die Liste "hart-codiert" in der Bibliothek ist, aber ich kann für den Gott von mir nicht diese kombinieren.
ich diese haben bisher:
number(X) :- member(X, [1,2,3,4,5]).
Dies gibt das korrekte Ergebnis, wie wenn ich fragen, für zum Beispiel and(number(2),number(4))
, heißt es ja, und and(number(2),number(6))
gibt keine.
Aber jetzt muss ich predicate/2
tun, die die Liste als erstes Argument nimmt. Kann mir jemand helfen/einen Hinweis geben?
predicate(ValidationList, Function) :- ????
nicht sicher sein konnte, unserstand ... 'und (Nummer (2), Nummer (4)) "und" und (Nummer (2), Nummer (6)) " Gibt es Beispiele für zu validierende Funktionen? Oder was meinst du (kannst du einige Beispiele zeigen?) Mit "Funktion, die validiert werden muss"? Wie auch immer ... kannst du dein 'Prädikat/1' zeigen? – max66
Ja, dies sind Beispiele für zu validierende Funktionen. Es geht um aussagenlogische Formeln. Wenn "und (Nummer (1), Nummer (2))" korrekt sein soll, dann muss die Validierungsliste die Nummern 1 und 2 enthalten. Deshalb "Zahl (X): - Mitglied (X, [1,2 , 3,4,5]) "funktioniert. Mein Problem ist, ein Prädikat zu definieren, so dass ich nachher zum Beispiel "Prädikat ([1,3,5,7], oder (Nummer (1), Nummer (2))) eingeben kann." Und es prüft, ob 1 und 2 Teil der Liste sind. – DaoDib