FizzBuzz問題ーPHP初級編ー


はじめに

FizzBuzz問題、1度は耳にしたことがある方が多いのではないかと思います。
今回はそのFizzBuzz問題を解説していきたいと思います。

そもそもFizzBuzz問題とは

英語圏で行われている言葉遊びの一種のようですね。

プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3の倍数では「Fizz」(Bizz Buzzの場合は「Bizz」)、5の倍数では「Buzz」、両者の公倍数(すなわち15の倍数)では「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。

引用:Fizz Buzz - Wikipedia

このゲームをプログラミングに応用したものが「Fizz Buzz問題」です。
プログラマーの基本的な知識を確認するのに、面接の小テストで用いられることもあります。

早速FizzBuzz問題を解いてみよう

【問題】
- 1から100までの数をプリントするプログラム
- 3の倍数の時には数の代わりに「Fizz」とプリントする
- 5の倍数の時には数の代わりに「Buzz」とプリントする
- 3と5両方の倍数の時には数の代わりに「FizzBuzz」とプリントする

【回答】
※今回は理解しやすい簡単なものを例に挙げています。
※PHPのバージョンは7系を前提としています。

//そのファイル内での関数呼び出しの際に厳密モードでの型検査が行われるようにする
declare(strict_types=1);

//1から100までの数を繰り返す
for ($i = 1; $i <= 100; $i++) {
    //3と5両方の倍数の(15の倍数)なら
    if ($i % 15 === 0) {
        echo 'FizzBuzz';
    //3の倍数のなら
    } elseif ($i % 3 === 0) {
        echo 'Fizz';
    //5の倍数のなら
    } elseif ($i % 5 === 0) {
        echo 'Buzz';
    //上記以外
    } else {
        echo $i;
    }
    //見やすいように改行
    echo PHP_EOL;
}

おわりに

いかがでしたでしょうか。
いったん1つの言語で理解すれば他の言語にも応用がきくと思うので仕組みを理解しておくことは大事でしょう。