【问题标题】:Prolog Difference Of SquaresProlog 平方差
【发布时间】:2016-05-21 20:38:17
【问题描述】:

我想在序言中找出 a+1 的平方和 a 的平方是 2a+1 的区别。出于这个原因,我写了这样的代码:

:- use_module(library(clpfd)).

kare(X,Y):- Y #= X*X.

abc(A,B,F) :-
        kare(A,P),
        kare(B,T), 
        F is P-T.

我试过了

?- abc(D,E,P).

ERROR: is/2: Arguments are not sufficiently instantiated.

谁能帮我解决这个问题。

【问题讨论】:

  • 请针对完全不同的主题提出新问题。请将此恢复为您之前的问题,并接受您给出的答案。你不应该修改你的问题,让它变得完全不同。
  • 我不能问它说等待 3 天
  • 请恢复您的更改,接受答案,然后然后提出一个新问题。

标签: prolog clpfd instantiation-error


【解决方案1】:

您收到错误是因为您使用的是 is/2,它期望参数被绑定。但是在您的示例查询中,参数DEP 是未绑定的变量,因此当您使用is/2 达到目标时PT 也未绑定。由于您已经在使用 clpfd,请改用 #=/2:

abc(A,B,F) :-
   kare(A,P),
   kare(B,T),
   F #= P-T.    % <- here

这样您的查询就会产生结果:

   ?- abc(D,E,P).
D^2#=_A,
_A in 0..sup,
P+_B#=_A,
_B in 0..sup,
E^2#=_B

【讨论】:

  • okey 如何求出 ** 求 a+1 的平方与 a 的平方为 2a+1 的差**
  • @dymayd:我不确定我是否正确理解您所说的a+1 的平方和a 的平方之间的差是2a+1 的意思。看看你的谓词 abc/3 我猜你可能想查询类似的东西:?- D #= A+1, E #= 2*A+1, abc(D,E,P). 或者A 的具体值:?- A #= 2, D #= A+1, E #= 2*A+1, abc(D,E,P). 你能提供一些你期望结果的例子吗?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多