我正在尝试解决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'的值应该绑定(分配)在一起。 如何编写prolog程序来执行此操作..?
谢谢。
答案 0 :(得分:4)
我假设您使用的是fd
,而不是ic
。它简化了一些事情。
:-lib(fd).
进一步假设你只有方程而不是不等式,只有一个变量X,那么你可以分两步完成:
compute(L=R, X) :-
term_variables(L, [X]),
L #= R.
首先,从左侧提取变量,然后发布计算方程的约束。如果等式有效,这将实例化您的变量。
修改强>
使用ic
库,使用eval(L)#=R
。