【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を作ることで、関数や配列の知識も使う練習になるので、よかったら試してみてください。

いいなと思ったら応援しよう!