アルゴリズムとデータ構造, PHP

PHP FizzBuzz

PHP

 

 

どうしてプログラマに・・・プログラムが書けないのか?

ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい?
コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。

 

 

FizzBuzzを解いてみよう!

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

ポイント

 

%で余りを出せるという知識

 

 

$result = 10 % 3;
echo $result; // 1

 

%2で割り切れる数かどうかを判定できる

 

<?php

$num = 10;
echo isEven($num); // 1

function isEven(int $num): bool
{
    if ($num % 2 === 0) {
        return true;
    }
    return false;
}

ここらへんの知識があれば、楽勝なのだ🐱

 

 

実装してみよう

 

https://github.com/yuukanehiro/AlgorithmsDataStructure/blob/main/Puzzle/FizzBuzz.php

<?php

$max = 100;
fizzBuzz($max);

/**
 * FizzBuzz
 *
 * @param int $max
 * @return void
 */
function fizzBuzz(int $max): void
{
    for ($i = 1; $i <= $max; $i++) {
        if ($i % 15 === 0) {
            echo "fizzbuzz\n";
            continue;
        }
        if ($i % 3 === 0) {
            echo "fizz\n";
            continue;
        }
        if ($i % 5 === 0) {
            echo "buzz\n";
            continue;
        }
        echo $i . "\n";
    }
}

// 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

ネットを見てるとFizzBuzzの話題が年数回目に飛び込んでくる。

 

再帰バージョン

 

<?php

function fizzbuzz($num) {
    if ($num > 1) {
        fizzbuzz($num -1);
    }
    
    if ($num % 3 === 0 && $num % 5 === 0) {
        print "fizzbuzz" . "\n";
    } elseif ($num % 3 === 0 ) {
        print "fizz" . "\n";
    } elseif ($num % 5 === 0 ) {
        print "buzz" . "\n";
    } else {
        print $num . "\n";
    }
}

fizzbuzz(100);

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)