Prolog: Und-Oder-Ausdrücke (Boolesche Funktion)

Ich mache die Hausaufgaben zu implementierenden zwei relations-und(A,B) und oder(A,B), die für die logischen "UND" und das logische "ODER" - Operationen auf zwei Boolesche Operanden A und B. die Relation und(A,B)gilt, wenn A und B beide true " ausgewertet wird. Beziehung oder(A,B)gilt, wenn entweder A oder B true oder A und B beide true " ausgewertet wird. Ein Und-ODER-Ausdruck geschachtelt werden können, z.B., und(oder(A,B) und(C,D)).

Einige sample-Eingang und-Ausgang:

?- and(true,false).
false.
?- or(true,false).
true.
?- and(A,true).
A = true ;
false.
?- or(A,B).
A = true ;
B = true ;
false.
?- and(or(A,B),and(C,D)).
A = true,
C = true,
D = true ;
B = true,
C = true,
D = true ;
false.
?- or( and(or(A,B),C), or(and(D,E),or(F,G)) ).
A = true,
C = true ;
B = true,
C = true ;
D = true,
E = true ;
F = true ;
G = true ;
false.

Mein code:

and(true,true).
and(false,_):-false.
and(_,false):-false.
or(true,_).
or(_,true).
or(false,false):-false.

Wenn ich die einfachen und-oder Ausdrücken, ist es ok. Aber wenn ich einige Ausdrücke enthalten geschachtelte und-oder-Ausdrücke, die es nur geben, "false" als Antwort. Wie kann ich das korrigieren Sie den code, so dass es laufen kann mit verschachtelten und-oder-Ausdrücke?

InformationsquelleAutor Peter | 2013-11-20

Schreibe einen Kommentar