我是Prolog的新手。现在我想用Prolog来解决算术表达问题。假设我们有这样的谓词:expr(E,Val,Var,Sol)
第一个是表达式,第二个是值,第三个是变量,第四个是结果。例如,如果我们问:expr(3+x,2,x,S)
the答案将是S=5
,如果我们问expr(5*6,3,x,S)
答案将是S=30
在这种情况下x不出现在表达式中所以我们只是忽略变量及其值。我想知道如何实现它,你能给我一些提示吗?
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.
有更简洁的方式来表达这一点。也许其他人想要贡献。