LoginSignup
0
0

More than 3 years have passed since last update.

【Ruby】FizzBuzzの問題

Last updated at Posted at 2020-11-27

こんにちは、あおい( 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)

0
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0