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