テスト勉強
テスト勉強中だったんですが、テキストにフェルマーの最終定理をCでプログラムとして表現してるものがあって、気分転換にRubyで書き直してみた。
def exp (x, n) ans = 1 n.times { |i| ans *= x } return ans end n = 3 total = 3 while true (total-2).times { |x| x += 1 (total-x-1).times { |y| y += 1 z = total - x - y if exp(x,n) + exp(y,n) == exp(z,n) then print "hello, world\n" end } } total += 1 end
解を見つけたら"hello,world\n"と出力する。
nが3なので何も表示する事なくひたすらループが回り続けます。
ところでrubyってインクリメントはないんですね。
total++
って書いたらおこられました。
あと、timesメソッドは便利ですけど、ループ変数の初期値が設定できないので、x += 1とか野暮ったいことを書かないと行けないはめに。。
ならforで書けばいいじゃないって話だけど、折角Rubyなんだからtimesメソッド使いたいよね。