
ちゃんとしたプログラマであれば、これを実行するプログラムを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);


