1

私は質問をします。どの答えがこのタスクを解決していますか:

長さの 6 つのセグメントから 3 つの辺を 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から3つの側面を選択し、それらがピタゴラスのステートメントに適合することを確認してください。(ここでも三角形の視差が必要ですか?つまり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 に答える