【问题标题】:use prolog to solve arithmetic expression用prolog解算术表达式
【发布时间】:2015-12-20 18:50:13
【问题描述】:

我是 Prolog 的新手。现在我想用 Prolog 解决算术表达式问题。假设我们有一个这样的谓词:expr(E,Val,Var,Sol) 第一个是表达式,第二个是值,第三个是变量,第四个是结果。 例如,如果我们问:expr(3+x,2,x,S)答案将是S=5 如果我们问expr(5*6,3,x,S),答案将是S=30,在这种情况下,x 不会出现在表达式中,所以我们只是忽略变量及其值。 我想知道我该如何实现它,你们能给我一些提示吗

【问题讨论】:

  • 我不太明白你真正想要做什么...求解方程?或者计算算术表达式(有一些额外的替换)?

标签: prolog arithmetic-expressions


【解决方案1】:
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.

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

【讨论】:

  • OP 查询失败 expr(5*6,3,x,S)
  • @gusbro:你能帮我解决这个问题吗?
猜你喜欢
  • 2014-05-23
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多