【发布时间】:2013-11-21 04:36:49
【问题描述】:
我正在做一个作业,需要实现两个关系和(A,B)和或(A,B),它们对两个布尔操作数 A 和 B 执行逻辑“与”和逻辑“或”运算。关系和(A,B) 如果 A 和 B 都评估为真,则成立。如果 A 或 B 的计算结果为真,或者 A 和 B 的计算结果为真,则关系 or(A,B) 成立。 And-OR 表达式可以嵌套,例如 and(or(A,B),and(C,D))。
一些示例输入和输出:
?- 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.
我的代码:
and(true,true).
and(false,_):-false.
and(_,false):-false.
or(true,_).
or(_,true).
or(false,false):-false.
当我运行简单的 and-or 表达式时,没关系。但是当我运行一些包含嵌套和-或表达式的表达式时,它只会给出“false”作为答案。如何更正代码以便它可以使用嵌套的 and-or 表达式运行?
【问题讨论】:
标签: prolog