0
0

More than 1 year has passed since last update.

【RUBY】FizzBuzz問題

Posted at

はじめに

プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

概要

スクールの問題でFizzBuzz問題というものが出てきて、かなり有名なプログラミングの問題ということでした。
まず、1〜100までの数字をターミナルに出力して、「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzz、3と5の倍数である「15の倍数」のときはFizzBuzzと出力するというプログラムを作っていきます。

作るプログラムの雛形は下記↓

def fizz_buzz
  # ここに処理を書き加えてください
end

fizz_buzz

条件の概要を整理すると、以下の4点でした。
・数字の1~100を出力する
・値が3の倍数のときだけ、"Fizz"という出力に置き換える
・値が5の倍数のときだけ、"Buzz"という出力に置き換える
・値が3と5の倍数のときだけ、"FizzBuzz"という出力に置き換える

ヒントとして、
・「〇〇の倍数」を導き出す時は剰余演算子を使う。
・条件を指定して繰り返し処理をする場合は、whileメソッドを使う。

プログラムの実装

①まずは、1〜100までの数字をターミナルに出力するためのプログラムです

def fizz_buzz
  num = 1
  while num <= 100 do
    puts num

    num = num + 1
  end
end

fizz_buzz

whileメソッドは、指定した条件がtrueである間ループします。
また、条件式がfalseになるまで処理を繰り返し行います。

②次に「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzzと出力します

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

③そしてここに「15の倍数(3と5の倍数)」の時についての条件式を追加します。しかし、このまま下に追加してしまうと上記4行目の「3の倍数であるか」または6行目の「5の倍数であるか」という条件式が真になり、FizzまたはBuzzと表示されてしまいます。

したがって、if文の最初に「15の倍数」のときはFizzBuzzと出力する条件を追加します。

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の倍数であるとき」の条件式をnum % 15 == 0からnum % 3 == 0 && num % 5 == 0のように置き換えることができます。

0
0
0

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