LoginSignup
0
0

More than 3 years have passed since last update.

[Ruby]fizzbuzz問題

Last updated at Posted at 2020-04-06

fizzbuzz問題とは

数値が3の倍数であれば、戻り値は”Fizz”
数値が5の倍数であれば、戻り値は”Buzz”
数値が3の倍数であり5の倍数でもある場合は、戻り値は”FizzBuzz”
上記のどれも満たさない場合は、その数値自体を戻り値にする
というもの。転職活動時に簡単な問題として出題されるとなんどか見たので、復習がてら解いて見ました。

rubyで解く

まず、メソッドを作ります。

def fizzbuzz(num)
end

次にif文で条件分岐させます。

def fizzbuzz(num)
 if num % 3 == 0 && num % 5 == 0 
   puts ”FizzBuzz”
 elsif num % 3 == 0
   puts ”Fizz”
 elsif num % 5 == 0
   puts ”Buzz”
 else 
   puts num
 end
end

上から順に、

  • numを3で割った余剰が0と等しい かつ numを5で割った余剰が0と等しい(num % 3 == 0 && num % 5 == 0)
  • numを3で割った余剰が0と等しい(num % 3 == 0)
  • numを5で割った余剰が0と等しい(num % 5 == 0)
  • どれにも当てはまらない場合、numを出力

という風に条件分岐させました。
次は1から100まで繰り返してnumに代入させます。繰り返しなので、each文を使うことにします。

(1..100).each do |num|
 def fizzbuzz(num)
  if num % 3 == 0 && num % 5 == 0 
    puts ”FizzBuzz”
  elsif num % 3 == 0
    puts ”Fizz”
  elsif num % 5 == 0
    puts ”Buzz”
  else 
    puts num
  end
end

(1..100)とすることで、「1~100の範囲で」といった意味がつきます。そしてeachでそれをひとつずつ取り出して num に代入していきます。
最後に puts fizzbuzz(num) を追加してあげれば完成です。

num_max = 100
(1..num_max).each do |num|
  def fizzBuzz(num)
    if num % 3 == 0 && num % 5 == 0
      puts "FizzBuzz"      
    elsif num % 3 == 0
      puts "Fizz"
    elsif num % 5 == 0
      puts "Buzz"
    else
      puts num
    end
  end  
  puts fizzBuzz(num) 
end
0
0
0

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