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

Create a rule in Prolog, cubeLess(X,B,R) which calculates the power of 3 and the remainder such that b =x3+r

我在序言中有这个问题。问:创建一个规则 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是XXX, 我该如何离开这里?

我们假设这里所有的相关数字都是整数。 使用 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