直角三角形prolog结构

时间:2014-02-28 20:49:23

标签: prolog geometry pythagorean

我要问一个问题,哪些答案正在解决这个问题:

  

通过选择六个长度为1到6的整数段中的三个边来构造哪些直角三角形

所以,我认为这是必不可少的:

between(1,6,X),
between(1,6,Y),
between(1,6,Z),

然后我们必须确保它符合毕达哥拉斯的说法,所以我正在尝试这个,加上上面的句子:

(X^2 = Y^2 + Z^2 ; 
Y^2 = X^2 + Z^2 ; 
Z^2 = X^2 + Y^2)

此外,我一直在尝试将X^2替换为X*X,但每次都会返回false。那是为什么?

根据我的理解,我需要它像这样工作: 从1-6范围中选择三个边,并确保它们符合毕达哥拉斯的说法。 (这里还需要三角形差异吗?我的意思是X>Y+Z,Y>X+Z,Z>X+Y

1 个答案:

答案 0 :(得分:2)

检查有关不同比较器等的prolog手册。它们意味着做各种事情。 =:=/2专门评估任一方的算术表达式,并检查结果是否相等。 =/2不是等式运算符;它执行prolog统一。了解其中的区别非常重要。在您的示例中,将所有结果限制为6的最大值,然后3,4,5的排列是直角三角形的唯一正整数解。

?- between(1,6,X), between(1,6,Y), between(1,6,Z), Z^2 =:= X^2 + Y^2.
X = 3,
Y = 4,
Z = 5 ;
X = 4,
Y = 3,
Z = 5 ;
false.