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 == 0やnumber % 5 == 0を先に書いてしまうと、そちらが先にtrueで評価され、期待どおりの挙動をしなくなってしまいます。