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
.
.
以上です。