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
.
.

以上です。

  • この記事を書いた人

コウダイ

都内のWeb系自社開発企業に勤務するエンジニア|33歳1児のパパ|ブログ歴4年→月間6,000PV|新卒で手取り18万のホテルマン6年→プログラミングを900時間勉強→100社以上応募しアラサー未経験から7ヶ月でフルリモートのWEB系自社開発エンジニアに転職し年収100万円UP|【人生を自由に、ノンストレスで生きる】をテーマに、30歳で文系・異業種未経験からITエンジニアに転職したノウハウの他、プログラミングやブログで稼ぐ方法など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-Ruby