今日のRubyプログラミングのお題は、コチラ。

Is it a Right Triangle?

与えられる三角形の3辺の長さ。その三角形が直角三角形かどうか調べるプログラム。
むむむ、やっと頭を使う感じの問題になってきた。

お題形式は、テキストでスペースで区切られた3つの数字データが与えられ、直角三角形ならYES、違えばNOを出力するプログラム。

ふむ、直角三角形である条件は・・・・

そうそう、ピタゴラス!ピタゴラスの定理だ!

1:1:√2

√3:√4:√5

昔、算数で習った記憶がよみがえる!さて、これをRubyのコード化してみよう。




file = open("dataset.txt")
i = file.gets.to_i
i.times do
array = file.gets.split(/\s/)
array[0] = array[0].to_i
array[1] = array[1].to_i 
array[2] = array[2].to_i
if (array[0]^2 + array[1]^2 == array[2]) || (array[0]^2 + array[2]^2 == array[1]^2) || (array[0]^2 == array[1]^2 + array[2]^2)
puts("YES")
else
puts("NO")
end
end
file.close


3パターンを総当りで検証するコードを書いてみた。

もうちょっと深く考えてみると、3つの数字の1番大きい数字、長辺とその他2辺を先に判別するのもアリかな?3つの数字が等しい場合でも問題ない様なコードなら、そっちの方がスマートかな?

ファイル読み込み、文字列の数字変換、if条件分岐、この辺りは大体マスターしたかな。
Ruby、楽しい!プログラミング、楽しい!