こんにちは、あおい( https://twitter.com/aoi_programming )です。
今回はRubyのFizzBuzz問題を解いていきます!
いくらRuby on RailsでWebアプリケーションを開発できるようになっても、それはRubyのフレームワークに過ぎないので、プログラミングの本質を磨くには生のRubyを勉強する他ないと思いまして、これからは、Ruby本体も毎日コツコツ勉強していこうかと。
そこで、今回は初心者プログラマーがまずぶち当たる壁「FizzBuzz」の問題に挑戦してみます。
もっと良いコードがあればご提示していただけると嬉しいです!
RubyのFizzBuzz問題
- 3で割り切れる数値を引数に渡すと「Fizz」と返す
- 5で割り切れる数値を引数に渡すと「Buzz」と返す
- 15で割り切れる数値を引数に渡すと「FizzBuzz」と返す
- それ以外の数値はその数値を文字列に変えて返す
- 改行はしない
- ひとつの数字につき、間に「,(カンマ)」をいれる
問題は上記の通りです。
実行方法は以下の通りです。
実行方法
% ruby test.rb
数字を入力してください。 # 31の場合
1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,16,17,Fizz,19,Buzz,Fizz,22,23,Fizz,Buzz,26,Fizz,28,29,FizzBuzz,31
それでは実装していきましょう。
※これより下は答えとなります。
##回答
test.rb
def fizzbuzz(nums)
nums.times do |num|
num += 1
if num % 15 == 0
print "FizzBuzz"
elsif num % 3 == 0
print "Fizz"
elsif num % 5 == 0
print "Buzz"
else
print num
end
if num == nums
print ""
else
print ","
end
end
end
puts "数字を入力してください"
n = gets.to_i
fizzbuzz(n)