非常に有名なプログラミングの問題とのことなので
備忘録として残しておく
1〜100までの数字をターミナルに出力。ただし、「3の倍数」のときは数字の代わりに文字列でFizz、「5の倍数」のときはBuzz、3と5の倍数である「15の倍数」のときはFizzBuzzと出力するという問題。
問題文からの仕様を整理すると
- 数字の1~100を出力する
- 値が3の倍数のときだけ、"Fizz"という出力に置き換える
- 値が5の倍数のときだけ、"Buzz"という出力に置き換える
- 値が3と5の倍数のときだけ、"FizzBuzz"という出力に置き換える
そしてこの問題は条件分岐と条件の組み合わせを利用するのが鍵とのことだ
def fizz_buzz
num = 1
while num <= 100 do
puts num
num = num + 1
end
end
fizz_buzz
まずは1〜100までの数字を出力するコードを記述
条件を指定して繰り返し処理をする場合は、whileメソッドを使用
def fizz_buzz
num = 1
while num <= 100 do
if num % 3 == 0 # 3の倍数のとき
puts "Fizz"
elsif num % 5 == 0 # 5の倍数のとき
puts "Buzz"
else # それ以外のとき
puts num
end
num = num + 1
end
end
fizz_buzz
続いて、「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzzと出力
def fizz_buzz
num = 1
while (num <= 100) do
if num % 15 == 0 # 15の倍数のとき
puts "FizzBuzz"
elsif (num % 3) == 0 # 3の倍数のとき
puts "Fizz"
elsif (num % 5) == 0 # 5の倍数のとき
puts "Buzz"
else # それ以外のとき
puts num
end
num = num + 1
end
end
fizz_buzz
そしてここに「15の倍数(3と5の倍数)」の時についての条件式を追加。しかし、このまま下に追加してしまうと上記4行目の「3の倍数であるか」または6行目の「5の倍数であるか」という条件式が真になり、FizzまたはBuzzと表示されてしまう。
したがって、if文の最初に「15の倍数」のときはFizzBuzzと出力する条件を追加する。