fizzbuzz.rb 3つ
30分プログラム、その27。眠いので、適当。
今回は、最近話題のFizzBuzz問題。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
これを一つ作るのに、30分かけていたらプログラマ失格なので、剰余を遣うのから使わないのまで計3種作ってみた。それでも、そこそこ時間が余ったけど。
基本的なバージョン:
1.upto(100){|n| if n % 15 == 0then puts 'fizzbuzz' elsif n % 3 == 0 then puts 'fizz' elsif n % 5 == 0 then puts 'buzz' else puts n end }
Arrayを使ったちょっと変なやつ
puts Array.new(101){|n| if n % 15 == 0 then 'fizzbuzz' elsif n % 3 == 0 then 'fizz' elsif n % 5 == 0 then 'buzz' else n end }[1..101].join("\n")
id:zyxwvに教えてもらった剰余を使わないバージョン
fizz = ['','','fizz'] * 34 buzz = ['','','','','buzz'] * 20 fb = (1..100).zip(fizz,buzz).map{|n,f,b| str = f+b str.empty?() ? n : str } puts fb.join("\n")
- 剰余を使わないバージョンがステキすぎる
- あ、今日はSchemeの日だった。間違えた