プログラマ職に応募してくる人間のほとんどが書けない「Fizz-Buzz問題」:濃縮還元オレンジニュース|gihyo.jp … 技術評論社

あぶないあぶない。ちょっといまさら感のある話題だけど、FizzBuzz問題みたいなのって「出来るにきまってる」って思うから書かないで終わりがちですな。
FizzBuzz問題

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

「こんな簡単な問題、俺が何年プログラマやってると思うんだ!?」なんて言わずに書いとこうか。

(1..100).each do |i|
  if(i % 15 == 0)
      puts 'FizzBuzz'
   elsif(i % 5 == 0)
      puts 'Buzz'
   elsif(i % 3 == 0)
      puts 'Fizz'
   else
      puts i
   end
end

初めは

100.times do |i|
   i+=1
   if(i % 5 == 0 && i % 3 == 0)
      puts 'fizzbuzz'
   elsif(i % 5 == 0)
      puts 'buzz'
   elsif(i % 3 == 0)
      puts 'fizz'
   else
      puts i
   end
end

なんて風にiをインクリメントしたり、「3と5両方の倍数」を律儀に3と5での剰余出してたのはナイショ。しかも何気に文字の大小を間違えてる。あと、数回コンパイル通らなかった。恥ずかしいわー。とはいえ、調べた限りじゃとても一般的な解を書いてるみたいかな。
個人的にはこれが気に入りました。FizzとBuzzをくっつけていくという発想はなかった。

(1..100).each{|i|
   x = ''
   x += 'Fizz' if i%3==0
   x += 'Buzz' if i%5==0
   puts(x.empty? ? i : x);
}

Ruby Quiz - FizzBuzz (#126)より
ワンライナーですごいのもあるけど、このあたりが落としどころじゃないですかね?