FizzBuzz問題をRubyで書くと

FizzBuzz問題とはこれ。

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

Step1
vi fizzbuzz.rbして以下を記述する。100.eachはさすがに通らなかった。iだけだと0から99表示になるのでi+1する。
[ruby] 100.times do |i|
puts i+1
end
[/ruby] ruby fizzbuzz.rbを実行すると1〜99が表示される。

完成した。
[ruby] #vi fizzbuzz.rb
100.times do |i|
i += 1
if i % 3 == 0 and i % 5 == 0
puts "FizzBuzz"
elsif i % 3 == 0
puts "Fizz"
elsif i % 5 == 0
puts "Buzz"
else
puts i
end
end
[/ruby]

が、仕様は満たしているが気に入らない。重複が多い。putsが何回も出てくるしi+=1とかダサい…。@ikmさんにしたがってちょっと直した。次はif文をどうにかしたいね。
[ruby] #vi fizzbuzz.rb
1.upto 100 do |i|
t = ""
if i % 3 == 0 and i % 5 == 0
t += "FizzBuzz\n"
elsif i % 3 == 0
t += "Fizz\n"
elsif i % 5 == 0
t += "Buzz\n"
else
t += "#{i}\n"
end
puts t
end
[/ruby]

1 COMMENT

ikm

1.upto(100) do |i| でもいけますよー。

現在コメントは受け付けておりません。