使用prolog来解决算术表达式

问题描述 投票:3回答:1

我是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不出现在表达式中所以我们只是忽略变量及其值。我想知道如何实现它,你能给我一些提示吗?

prolog arithmetic-expressions
1个回答
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.

有更简洁的方式来表达这一点。也许其他人想要贡献。

© www.soinside.com 2019 - 2024. All rights reserved.