【问题标题】:Create a rule in Prolog, cubeLess(X,B,R) which calculates the power of 3 and the remainder such that b =x3+r在 Prolog 中创建一个规则 cubeLess(X,B,R),它计算 3 的幂和余数,使得 b =x3+r
【发布时间】:2016-01-31 19:09:31
【问题描述】:

我在序言中有这个问题。问:创建一个规则 cubeLess(X,B,R),计算 3 的幂和余数,使得 b =x3+r。例如 cubeLess(2,10,R) 应该导致 R=2。 到目前为止,我已经编写了基本情况 cubeLess(0,0,0) 和 多维数据集(X,B,R):- X>0, X1 是 XXX, 我怎么从这里走?

【问题讨论】:

    标签: prolog clpfd


    【解决方案1】:

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

    :- use_module(library(clpfd))。

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

    多维数据集(X,B,R):- B #= X^3 + R。

    示例查询:

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

    最一般的查询怎么样?

    ?- 多维数据集(X,B,R)。 X^3 #= _A, _A+R #= B。

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

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

    【讨论】:

    • 我试过 cubeLess(X,B,R):- B = X^3 + R。它没有用。难道我不需要写一个规则来找到 R 吗?在这种情况下是否涉及递归?
    • (=)/2(#=)/2 之间存在差异。 “数字符号变体”由 clpfd 提供。
    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2012-01-04
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2017-12-30
    • 2021-07-15
    相关资源
    最近更新 更多