如何在Prolog中编写数字谓词

  • 本文关键字:数字 谓词 Prolog prolog
  • 更新时间 :
  • 英文 :


与之前提出的问题类似,我正在尝试创建一个数值函数来计算斜率。正如上述链接的答案所示,我发现,我最终会得到 3 的 arity,斜率/3 看起来像这样:

slope((Xa, Ya), (Xb, Yb), S) :-
S is div((Yb - Ya), (Xb - Xa)).

我的下一个问题是:我如何使用它?S最终将包含1-1但是,作为prolog新手,我看不出如何在规则中使用它。是吗

answer((Xa, Ya), (Xb, Yb)) :- slope((Xa, Ya), (Xb, Yb), 1), slope((Xa, Ya), (Xb, Yb), -1).

还是别的什么?

你的谓词:

answer((Xa, Ya), (Xb, Yb)) :-
slope((Xa, Ya), (Xb, Yb), 1),
slope((Xa, Ya), (Xb, Yb), -1).

(Xa, Ya)(Yb, Yb)之间的斜率应该是1;并且(Xa, Ya)(Yb, Yb)之间的斜率应该-1.除非斜率可以有两个值,否则不会发生这种情况。

此外,无论如何,我不相信在这里使用斜坡是一个好主意。如果Xb-Xa为零,则这将导致计算错误,因为您除以零。

您可以说两个值的斜率是1-1,因为YbYa之间差值的绝对值与XbYa之间差值的绝对值相同。

我们可以用以下方式表达这一点:

answer((Xa, Ya), (Xb, Yb)) :-
abs(Xa - Xb)=:=abs(Ya - Yb).

相关内容

  • 没有找到相关文章

最新更新