1

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

哪些直角三角形可以通过从长度为 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^2X*X,但每次都返回 false 。这是为什么?

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

4

1 回答 1

2

检查有关不同比较器等的序言手册。它们的含义和做各种事情。=:=/2是专门评估两边的算术表达式并检查结果是否相等。=/2不是等式运算符;它执行序言统一。了解其中的区别很重要。在您的示例中,将所有结果限制为 的最大值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.
于 2014-02-28T21:39:16.607 回答