1

我正在尝试解决 prolog 中的算术表达式(实现 - eclipse prolog)。要求解的算术表达式是这样的:

A * (C + B * X) + D * X = E

X 是要计算的值,所有其他 (A,B,C,D,E) 都是数字。

例如:5 * (3 + 2*X) + 2*X = 39,在计算时应将 X 赋值为 2。

将输入 Prolog 的查询(目标)将采用以下形式:

?- compute( 5*(3+2*X)+2*X = 39, Result).

“结果”和“X”的值应该绑定(分配)在一起。我该如何编写序言程序来做到这一点..?

谢谢你。

4

1 回答 1

4

我假设你使用fd,而不是ic。它简化了一些事情。

:-lib(fd).

进一步假设您只有方程而不是不等式,并且只有一个变量 X,那么您可以分两步完成:

compute(L=R, X) :-
  term_variables(L, [X]),
  L #= R.

首先,从左侧提取变量,然后发布计算方程的约束。如果等式有效,这将实例化您的变量。

编辑

使用ic库,使用eval(L)#=R.

于 2012-02-09T10:38:02.863 回答