先日、あるところでFizzBuzz問題なるものを出題されました。
FizzBuzz問題とは、
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
というもの。
管理人、ちょっと焦って~10分もかけてコードを書いたような気がしますが、
その時に書いたコードがこちら
for ($i=1; $i<=100; $i++) {
$fizzFlag = false;
$buzzFlag = false;
$fizzbuzzFlag = false;
if (($i % 3) == 0) {
$fizzFlag = true;
}
if (($i % 5) == 0) {
if ($fizzFlag == true) {
$fizzbuzzFlag = true;
} else {
$buzzFlag = true;
}
}
if ($fizzbuzzFlag == true) {
echo 'FizzBuzz';
} else if ($fizzFlag == true) {
echo 'Fizz';
} else if ($buzzFlag == true) {
echo 'Buzz';
} else {
echo $i;
}
}
まー結果は合っているのですが、あとから考えると
無駄な処理をいろいろと書いちゃってました。
まず、各変数なんて必要ないですよね。
そこで変数なしバージョンはこちら。
for ($i=1; $i<=100; $i++) {
if (($i % 15) == 0) {
echo 'FizzBuzz';
} else if (($i % 3) == 0) {
echo 'Fizz';
} else if (($i % 5) == 0) {
echo 'Buzz';
} else {
echo $i;
}
}
コードが約半分になりました。
こういうちょっとした事でも無駄なコードになってしまっている。。
管理人、ちょっと反省です。
しかし上には上がいるものです。
もっとコードを短縮させたい方はこちらの先人の方の記事がおすすめです。
