Ruby

RubyでFizzBuzz問題を解いてみる

FizzBuzz問題とは

プログラミングの基礎的な技術力を測るために用いられる有名な問題。
エンジニア転職でも採用試験で出題されることもあるため、プログラミング初心者の方はマスターしておくと良いかと思います。

問題内容

問題例

1から100まで数を数える時に、3の倍数なら「fizz」、5の倍数なら「buzz」、ただし15の倍数なら「fizzbuzz」、それ以外はその数を答える。これを実現するコードを記述しなさい。
ただし、elsifは使用せずに。という問題

「elsifは使用せずに」は今回はおまけです。

例)
1
2
Fizz
4
.
.

回答

まずは、単純に1〜100を出力するコードを記載してみます。

array=[*1..100]
puts array

これで、1〜100までを出力できました。

ここから、
3の倍数なら「fizz」、
5の倍数なら「buzz」、
15の倍数なら「fizzbuzz」、
を出力出来るように変更していきます。

elsifありで、each文

array=[*1..100]

array.each do |n|
  if n%15 == 0
    puts "FizzBuzz"
  elsif n%3 == 0
    puts "Fizz"
  elsif n%5 == 0
    puts "Buzz"
  else
    puts n
  end
end

elsifありで、for文

array=[*1..100]

for n in array
  if n%15==0
      puts "FizzBuzz"
  elsif n%3==0
      puts "Fizz"
  elsif n%5==0 
      puts "Buzz"
  else
      puts n
  end
end

elsifありで、while文

n=1
#nが100になるまで繰り返す
while n <=100

    if n%15==0
        puts "FizzBuzz"
    elsif n%3==0
        puts "Fizz"
    elsif n%5==0 
        puts "Buzz"
    else
        puts n
    end

    n +=1
end

elsifを使用せずに回答

each文

array=[*1..100]

array.each do |n|
  if n%15 == 0
    puts "FizzBuzz"
  else
    if n%3 == 0
      puts "Fizz"
    else
      if n%5 == 0
        puts "Buzz"
      else
        puts n
      end
    end
  end
end

while文

n = 1
while n <= 100
  str = ""

  if n % 3 == 0 #① 3で割り切れたらstrに"fizz"を代入
    str = str + "fizz"
  end

  if n % 5 == 0 #② 5で割り切れたらstrに"buzz"を代入
    str = str + "buzz"
  end

  #①と②の結果が共にtrueであれば、strは"fizzbuzz"になる(15の倍数)

  if str == ""
    str = str + n.to_s
  #①と②の結果が共にfalseであれば、strにnの数値を代入(3と5でも割り切れない)
  end

  puts str
  n += 1
end

実行結果

1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz
fizz
22
23
fizz
buzz
26
fizz
28
29
fizzbuzz
.
.

以上です。

  • この記事を書いた人

コウダイ

文系・ノースキル・完全未経験・アラサー・地方住み・残業100時間超えの社畜ホテルマンから都内上場IT企業のフルリモートWebエンジニアに転職した人。

都内上場IT企業に勤務するWebエンジニア5年目|プログラミングスクールのテックキャンプ公式アンバサダー|新卒で手取り18万の地方ホテルマン6年→プログラミングを900時間勉強→転職活動100社以上応募→アラサー未経験から7ヶ月でフルリモートのWebエンジニアに転職し年収100万円UP|33歳2児のパパ|ブログ歴4年→月間6,000PV|エンジニア転職ノウハウ、プログラミング、Web制作、副業での稼ぎ方など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-Ruby