「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

フィズバズ問題(FizzBuzz問題)

pointこの用語のポイント

pointプログラミングの問題(課題)だよ

point「1から100までの数字を画面に表示する」「3の倍数のときは数字の代わりにFizzと表示する」「5の倍数のときは数字の代わりにBuzzと表示する」「15の倍数のときは数字の代わりにFizzBuzzと表示する」プログラムを組ませるよ

point基本的なプログラミング力があるか見極めたいときに出されたりするよ

point縛りを入れることで難易度を上げて遊ぶ人もいるよ

スポンサーリンク

簡単に書くよ

フィズバズ問題(FizzBuzz問題)(読:フィズバズモンダイ 英:FizzBuzz)とは

そいつの実力を測るために出されたりするプログラミングの問題のひとつ
であり

「1から100までの数字を画面に表示する。ただし、3の倍数のときは数字の代わりにFizzと表示し、5の倍数のときは数字の代わりにBuzzと表示し、15の倍数のときは数字の代わりにFizzBuzzと表示する」プログラムを組んでみろやぁ!な問題のこと
です。


image piyo

詳しく書くよ

サクっと一言で説明すると

1.1から100までの数字を画面に表示する
2.数字が3の倍数のときは数字の代わりに「Fizz」と表示する
3.数字が5の倍数のときは数字の代わりに「Buzz」と表示する
4.数字が15の倍数のときは数字の代わりに「FizzBuzz」と表示する


プログラムを組んでみろ!な問題(課題)が「FizzBuzz問題」です。
基本的なプログラミング力があるか確認したいときとかに出題されます。

FizzBuzz問題

実際のところ、問題としての難易度は高くありません。
ある程度プログラミングできる人なら普通に解けるでしょう。

だからこそ、解けるか解けないでプログラミングの基礎が分かっているかを(ある程度)判断できます。

FizzBuzz問題2

また、プログラミングというのは同じ処理でもいろいろな書き方ができます。
どのような書き方をするかで、その人の技術レベルを推測できたりもします。

FizzBuzz問題3

あとは「〇〇の書き方は禁止!」のような縛りを付けて難易度を上げたり、どれだけ短い書き方ができるかを競ったり、お遊び的に出題されることもあるようです。

FizzBuzz問題4

……というのがFizzBuzz問題の大雑把な説明です。
プログラミングの基礎ができているか確認したり、遊んだりするための「プログラミングの問題(課題)」ね。

以上でFizzBuzz問題自体の説明は終わりですが、せっかくなので、FizzBuzz問題の答えとなるコードのサンプルをいくつか載せておきます。
「手元に動かす環境があったから」という理由でPHPで書きましたが、日本語で補足説明を入れてあるので、PHPが分からない人でも何をやっているかは把握できると思います。

まずは一番、素直な書き方です。

<?php

for($i = 1; $i <?= 100; $i++){    //1から100までループ
    if($i % 15 == 0){
        //15で割った余りが0(=15の倍数)のとき
        //「FizzBuzz」を表示する
        print "FizzBuzz";
    }else if($i % 3 == 0){
        //3で割った余りが0(=3の倍数)のとき
        //「Fizz」を表示する
        print "Fizz";

    }else if($i % 5 == 0){
        //5で割った余りが0(=5の倍数)のとき
        //「Buzz」を表示する
        print "Buzz";
    }else{
        //15の倍数でも3の倍数でも5の倍数でもないとき
        //数字を表示する
        print $i;
    }

    //見やすくするために空白を入れておきます
    print " ";
}


次は15の倍数か否かの判定を外してみましょうか。

<?php

for($i = 1; $i <= 100; $i++){    //1から100までループ
    //出力するやつ
    $output = "";

    if($i % 3 == 0){
        //3で割った余りが0(=3の倍数)のとき
        //「Fizz」をくっつける
        $output = $output . "Fizz";
    }

    if($i % 5 == 0){
        //5で割った余りが0(=5の倍数)のとき
        //「Buzz」をくっつける
        $output = $output . "Buzz";
    }

    if($output == ""){
        //「Fizz」も「Buzz」もなかったら
        //出力するやつに数字を入れる
        $output = $i;
    }

    //出力
    print $output . " ";
}


個人的には好きではない書き方ですが、三項演算子というのを使って判定と表示をまとめてやることもできます。

<?php

for($i = 1; $i <= 100; $i++){    //1から100までループ
    //ゴチャゴチャやって出力
    print ($i % 15 == 0 ? "FizzBuzz" : ($i % 3 == 0 ? "Fizz" : ($i % 5 == 0 ? "Buzz" : $i))) . " ";
}


最後に「発想力は認めるけど、おまえ、プログラミングできないだろ」な書き方もしてみましょうか。

<?php

//出力用配列
$output = array(
    "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",
    "31",
    "32",
    "Fizz",
    "34",
    "Buzz",
    "Fizz",
    "37",
    "38",
    "Fizz",
    "Buzz",
    "41",
    "Fizz",
    "43",
    "44",
    "FizzBuzz",
    "46",
    "47",
    "Fizz",
    "49",
    "Buzz",
    "Fizz",
    "52",
    "53",
    "Fizz",
    "Buzz",
    "56",
    "Fizz",
    "58",
    "59",
    "FizzBuzz",
    "61",
    "62",
    "Fizz",
    "64",
    "Buzz",
    "Fizz",
    "67",
    "68",
    "Fizz",
    "Buzz",
    "71",
    "Fizz",
    "73",
    "74",
    "FizzBuzz",
    "76",
    "77",
    "Fizz",
    "79",
    "Buzz",
    "Fizz",
    "82",
    "83",
    "Fizz",
    "Buzz",
    "86",
    "Fizz",
    "88",
    "89",
    "FizzBuzz",
    "91",
    "92",
    "Fizz",
    "94",
    "Buzz",
    "Fizz",
    "97",
    "98",
    "Fizz",
    "Buzz"
);

foreach($output as $value){ //配列の要素を1つずつ取り出す
    //出力
    print $value . " ";
}


いかがでしょう。
いろいろな書き方ができますよね。

内容が単純だからこそ、個性が浮き彫りになる問題です。


image piyo2

一言でまとめるよ

まぁ「FizzBuzz問題」って単語が出てきたら「『1から100までの数字を画面に表示する。ただし、3の倍数のときは数字の代わりにFizzと表示し、5の倍数のときは数字の代わりにBuzzと表示し、15の倍数のときは数字の代わりにFizzBuzzと表示する』プログラムを作りなさい!な問題なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像074
書籍画像016


書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
わかばちゃんとつくって、壊して、直して学ぶ NewSQL入門
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本