fizzbuzz

fizz_buzz.rb

def fizz_buzz(number)
  if number % 15 == 0
    "FizzBuzz"
  elsif number % 3 == 0
    "Fizz"
  elsif number % 5 == 0
    "Buzz"
  else
    number.to_s
  end
end

puts "数字を入力してください。"

input = gets.to_i

puts '結果は...'
puts fizz_buzz(input)

解説

「3と5の両方で割り切れる数値」をどのような条件で表現するか、
そして、「条件式の順番」がこの問題の要になります。

どのような条件で表現するかについては、number % 3 == 0 && number % 5 == 0と書いても同じ結果になります。
しかし、もっとシンプルに考えて、
3で割り切れる数値(=3の倍数)かつ、5で割り切れる数値(=5の倍数)は、
つまり15で割り切れる数値(=15の倍数)なので、number % 15 == 0と書くことができます。

また、15の倍数は、3でも5でも割り切れる数値なので、number % 15 == 0を条件分岐の先頭に持ってくる必要があります。
number % 3 == 0number % 5 == 0を先に書いてしまうと、そちらが先にtrueで評価され、期待どおりの挙動をしなくなってしまいます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする