LoginSignup
0
0

More than 3 years have passed since last update.

FizzBuzz問題

Posted at

非常に有名なプログラミングの問題とのことなので
備忘録として残しておく

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と出力する条件を追加する。

0
0
1

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