【Progate終えた方へ】いろんな言語でFizzBuzzのコードを書く方法 〜世界のナベアツ問題〜 Java, Python, Ruby, Javascript,PHP, C#, Swift, Kotlin, Scala, Go
いろんな言語でFizzBuzzの書き方を教えます。
FizzBuzzとは?(別名:世界のナベアツ問題)
世界のナベアツといえば...3の倍数と5の倍数の時にアホになるといった芸を持っている芸人さんです。
それのように、プログラミング業界でもFizzBuzz問題という有名な問題があります。
FizzBuzz問題とは?
1から100までの数字を出力する際、3の倍数のときに"Fizz"、5の倍数の時に"Buzz"、3の倍数かつ5の倍数の時は、"FizzBuzz"と出力しなさい。
という問題です。
なぜFizzBuzz問題を扱うか?
初級者プログラマーの採用の際に、コーディングテストで聞かれる場合があるからです。事実、私も前職の企業面接の時にFizzBuzz問題のコーディングテストがありましたし、自分の友人も同様にあったと話しています。基本文法の確認をするために、よく使われる問題です。
ここでいう基本文法とは、
- 繰り返し処理
- 複数の条件分岐
- 演算
です。
この書き方がわかっていれば、本来は楽勝に溶ける問題なのですが、意外とつまずきポイントもあるので、それも含めて解説していきます。
FizzBuzz問題の解答の作り方
基本的には、以下の流れで作ると簡単です。
① 1から100までの数字をループして表示させるようにする。
② 3の倍数の時の条件処理を作成
③ 5の倍数の時の条件処理を作成
④ 3の倍数かつ5の倍数の時の条件処理を作成(※初心者つまずきポイントあり)
それでは、実際の解答例を見ていきましょう!!
※自分でコーディングしてからチャレンジしたい人は、ぜひ、コーディングしてから答え合わせをしてみてください。
自分の頭で考えるトレーニングがとても重要です!
各言語のFizzBuzzの書き方
JavaのFizzBuzz解答例
for(int i = 1; i <= 100; ++i){
if(i % 3 == 0 && i % 5 == 0){
System.out.println("FizzBuzz");
}else if(i % 3 == 0){
System.out.println("Fizz");
}else if(i % 5 == 0){
System.out.println("Buzz");
}else{
System.out.println(i);
}
}
PythonのFizzBuzz解答例
for i in range(1, 101):
if i % 15 == 0:
print("Fizz Buzz!")
elif i % 3 == 0:
print("Fizz!")
elif i % 5 == 0:
print("Buzz!")
else:
print(i)
RubyのFizzBuzz解答例
for i in 1..100 do
if i % 15 == 0
puts "FizzBuzz"
elsif i % 5 == 0
puts "Buzz"
elsif i % 3 == 0
puts "Fizz"
else
puts i
end
end
JavascriptのFizzBuzz解答例
for (var i = 1; i <= 100; i++) {
if (i % 3 == 0 && i % 5 == 0) {
console.log('FizzBuzz');
} else if (i % 3 == 0) {
console.log('Fizz');
} else if (i % 5 == 0) {
console.log('Buzz');
} else {
console.log(i);
}
}
PHPのFizzBuzz解答例
for($i = 1; $i <= 100; $i++){
if($i % 15 == 0) {
echo "FizzBuzz"."\n";
} elseif($i % 5 == 0) {
echo "Buzz"."\n";
} elseif($i % 3 == 0) {
echo "Fizz"."\n";
} else {
echo $i."\n";
}
}
C#のFizzBuzz解答例
for (int i = 1; i <= 100; i++) {
if (i % 15 == 0) {
Console.WriteLine("FizzBuzz");
} else if (i % 5 == 0) {
Console.WriteLine("Buzz");
} else if (i % 3 == 0) {
Console.WriteLine("Fizz");
} else {
Console.WriteLine(i);
}
}
swiftのFizzBuzz解答例
for i in 1...100 {
if i % 15 == 0 {
print("FizzBuzz");
} else if i % 5 == 0 {
print("Buzz")
} else if i % 3 == 0 {
print("Fizz")
} else {
print(i)
}
}
KotlinのFizzBuzz解答例
for (i in 1..100) {
if (i % 15 == 0)
println("FizzBuzz")
else if (i % 3 == 0)
println("Fizz")
else if (i % 5 == 0)
println("Buzz")
else
println(i)
}
ScalaのFizzBuzz解答例
for(i <- 1 to 100) {
if(i % 3 == 0 && i % 5 == 0) {
println("FizzBuzz")
} else if (i % 3 == 0) {
println("Fizz")
} else if (i % 5 == 0) {
println("Buzz")
} else {
println(i)
}
}
GoのFizzBuzz解答例
for i := 1; i <= 100 ; i++ {
if i % 3 == 0 && i % 5 == 0 {
fmt.Println("FizzBuzz")
} else if i % 3 == 0 {
fmt.Println("Fizz")
} else if i % 5 == 0 {
fmt.Println("Buzz")
} else {
fmt.Println(i)
}
}
FizzBuzz問題の初心者のつまずきポイント!!
最初のIFの()には、3の倍数かつ5の倍数(FizzBuzz)を入れること
理由:
もし、最初のif文に3の倍数(Fizz)の条件を書いてしまった場合、15が入ってきた時に、3の倍数(Fizz)に入ってしまうため、永遠に3の倍数かつ5の倍数(FizzBuzz)の条件に入ることがないためです。
もっとかっこいいFizzBuzzにするには?
上記のFizzBuzz問題は、最低限の解答です。
もっとよりカッコよく書きたい場合は、以下のようなことを取り入れるといいと思います。
① 1から100の数字を配列にして、拡張for分でループを回す
② FizzBuzz関数を作って、returnで戻り値を渡すようにする
上記の条件でFizzBuzzを作ることで、関数や配列の知識も使う練習になるので、よかったら試してみてください。