我是Prolog的新手。现在我想用Prolog来解决算术表达问题。假设我们有这样的谓词:expr(E,Val,Var,Sol)
第一个是表达式,第二个是值,第三个是变量,第四个是结果。
例如,如果我们问:expr(3+x,2,x,S)
答案是S=5
如果我们问expr(5*6,3,x,S)
答案将是S=30
,在这种情况下,x不会出现在表达式中,所以我们只是忽略变量及其值。
我想知道如何实现它,你能给我一些提示吗
答案 0 :(得分:2)
number_si(N) :-
functor(N,_,_),
number(N).
expr(V,Val,V,Val).
expr(N, _Val, _Var, N) :-
number_si(N).
expr(A+B, Val,Var, R) :-
expr(A, Val, Var, RA),
expr(B, Val, Var, RB),
R is RA+RB.
甚至有更简洁的方法来表达这一点。也许其他人想要贡献。