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