在 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,我们可以使用 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
。
我在序言中有这个问题。问:创建一个规则 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,我们可以使用 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
。