我在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, 我怎么从这里出发?
答案 0 :(得分:2)
我们假设这里所有相关数字都是整数。 使用SWI-Prolog,我们可以使用clpfd:
:- 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
。