在Prolog,cubeLess(X,B,R)中创建一个规则,计算3的幂和余数,使得b = x3 + r

时间:2016-01-31 19:09:31

标签: prolog clpfd

我在prolog中有这个问题。问:创建一个规则cubeLess(X,B,R),它计算3的幂和余数,使得b = x3 + r。例如,cubeLess(2,10,R)应该导致R = 2。 到目前为止,我已经编写了基础案例cubeLess(0,0,0) 和 cubeLess(X,B,R): - X> 0,                    X1是X X X, 我怎么从这里出发?

1 个答案:

答案 0 :(得分:2)

我们假设这里所有相关数字都是整数。 使用SWI-Prolog,我们可以使用

:- use_module(library(clpfd)).

接下来,我们像这样定义谓词cubeLess/3

cubeLess(X, B, R) :-
   B #= X^3 + R.

示例查询:

?- cubeLess(2, 10, R).
R = 2.

最常见的查询怎么样?

?- cubeLess(X, B, R).
X^3 #= _A,
_A+R #= B.

这里没有多少传播......但那没关系!

如果您对地面解决方案感兴趣,请约束有限域,然后使用labeling/2