代码之家  ›  专栏  ›  技术社区  ›  user45610

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

  •  2
  • user45610  · 技术社区  · 8 年前

    我在序言中有这个问题。Q: 创建一个规则cubeLess(X,B,R),它计算3的幂和余数,使得B=x3+R。例如,cubeLess(2,10,R)应得到R=2。 到目前为止,我已经编写了基本大小写cubeLess(0,0,0) 和 无立方体(X,B,R):-X>0, X1为X 十、 十、 我从这里怎么走?

    1 回复  |  直到 8 年前
        1
  •  2
  •   repeat    8 年前

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