【问题标题】:prolog: rule to check pythagorean triplet?序言:检查毕达哥拉斯三元组的规则?
【发布时间】:2013-05-14 16:03:16
【问题描述】:

Prolog 一直对我说 'no'.... :(

我是非常 prolog 新手,我有一个基本问题:

所以我试图生成一个简单的规则来检查三个数字是否构成直角三角形的边长,如下所示:

addup(X,Y,Z) :- X is Y+Z. /* this works*/
pythag(H,A,B) :- (H*H) is (A*A) + (B*B). /*this doesn't work*/

对于测试,“加法”规则似乎确实有效.... 我认为我的程序中“IS”的左侧存在问题,因为以下测试似乎表明了这一点:

在交互模式下,我可以判断 2 是否是 1 和 1 的和,它说是:

| ?- 2 is 1+1.

yes

但是如果我切换左右手边;它说不:

| ?- 1+1 is 2.

no

有人可以提供上述 pythag 规则的正确版本吗? 版本信息如下:

GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- 

【问题讨论】:

    标签: math prolog pythagorean


    【解决方案1】:

    我的 prolog 知识很老,但我认为问题在于 Prolog 只评估 is 的右侧

    那就试试吧:

    pythag(H,A,B) :- Z is H*H, Z is (A*A) + (B*B).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多