世界のナベアツでプログラミング 「3の倍数と3の付く数字のときだけアホになります」
目次
プログラミング初心者のための格好の課題として、FizzBuzz問題(新しいタブで開く)と言うものがあります。WikipediaでFizz Buzzを調べると次のように説明されています。
最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は 「Fizz」(Bizz Buzz の場合は 「Bizz」)、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」(Bizz Buzz の場合は 「Bizz Buzz」)を数の代わりに発言しなければならない。
この遊びをプログラミングの課題としたのが、FizzBuzz問題です。
世界のナベアツをPHPでプログラミング
ただ、これをやっているだけでは、面白くありません。そこで「3の倍数と3のつく数字でアホになる」と言うギャグでおなじみの世界のナベアツさん風にPHPで記述してみましょう。
<?php for($i=1;$i<=30;$i++){ echo "世界のナベアツ→"; if($i%3 == 0 || strstr($i, '3') ) { echo $i."アホ<br/>"; } else { echo $i."<br/>"; } echo "\n"; } ?>
結果を表示すると、このようになります。
ポイントは($i%3 == 0 || strstr($i, ‘3’))ですね。「3で割り切れるかもしくは3のつく数字が検索された場合」という意味です。
世界のナベアツをJavaScriptでプログラミング
次にJavaScriptで書いてみましょう。
for (var i = 1; i <= 30; i++) { var target = /[3]/.test(i.toString()); document.write('世界のナベアツ→'); if (i % 3 === 0 || target) { document.write(i + 'アホ'); } else { document.write(i); } document.write('<br/>'); }
ポイントはvar target = /[3]/.test(i.toString());です。
3を正規表現を扱うオブジェクトとして、testメソッドで変数iの文字列をtrue or falseで判定しています。別解としては、次のようなコードもあります。
for (var i = 1; i <= 30; i++) { document.write('世界のナベアツ→'); if (i % 3 === 0 || String(i).indexOf("3") >= 0) { document.write(i + 'アホ'); } else { document.write(i); } document.write('<br/>'); }
PHPとJavaScriptでは書き方が全然違いますね~。