#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