1. TOP
  2. Webサービス
  3. JavaScript
  4. 世界のナベアツでプログラミング 「3の倍数と3の付く数字のときだけアホになります」 

世界のナベアツでプログラミング 「3の倍数と3の付く数字のときだけアホになります」 

|
PHP

プログラミング初心者のための格好の課題として、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]

結果を表示すると、このようになります。

nabeatsu1

ポイントは($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では書き方が全然違いますね~。

[amazonjs asin=”4798121517″ locale=”JP” title=”独習PHP 第2版”]

[amazonjs asin=”4798130842″ locale=”JP” title=”独習JavaScript 第2版”]