1
我想解决一个算术表达式在prolog(实现 - eclipse prolog)。要解决的算术表达式是这样的:如何在序言中进行算术表达式评估?
A * (C + B * X) + D * X = E
X是要被计算的值,和所有其他(A,B,C,d,E)是所有数字。
例如:5×(3 + 2 * X)+ 2 * X = 39,在计算应与值2
查询(目标)将被输入到分配的Prolog X将采取形式:
?- compute(5*(3+2*X)+2*X = 39, Result).
'结果'和'X'的值应该绑定(分配)在一起。 如何编写prolog程序来做到这一点..?
谢谢。
感谢您的摘录,我测试过它的工作。然而,我对序言很陌生,无法理解X如何计算价值。我假设#=是一个延迟约束。你能指导我解决计算方法吗?谢谢。 – kallakafar 2012-02-09 10:48:09
是的,'#=/2'表示一个整数约束。参见ECLiPSe的约束库手册中的3.1节,它解释了ic解算器。里面发生的事情是约束传递算法在约束被发布时开始。这将更新连接到约束的变量的域,以使它们一致。在这种情况下,这足以获得解决方案。 Marriott/Stuckey的“用约束编程”是一本很好的教科书,就像Apt/Wallace的“使用Eclipse进行约束逻辑编程”一样。 – twinterer 2012-02-09 11:33:02
感谢这个方向,它确实有帮助!谢谢。 – kallakafar 2012-02-09 15:56:16