遅まきながらFizzBuzz

2年くらい前にさんざんはやったので、超今更なのだけど....

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

私ならこんな感じかなぁ。(ruby)

1.upto(100) { |x|
  s = x if (s = ['Fizz','',''][x % 3]+['Buzz','','','',''][x % 5]) == ''
  puts s
}

【2008/11/30追記】ちょっと修正。こっちのほうがしっくりくるかも。(数値分のリテラルが並ぶのが気持ち悪かったので)

1.upto(100) { |x| 
  s = x if (s = (['Fizz'][x % 3] || '')+(['Buzz'][x % 5] || '')) == ''
  puts s
}