1. TOPTOP
  2. Webサービス
  3. JavaScript

世界のナベアツでプログラミング 「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

for($i=1;$i<=30;$i++){

	echo "世界のナベアツ→";
	if($i%3 == 0 || strstr($i, '3') ) {
		echo $i."アホ<br/>";
     } else {
        echo $i."<br/>";
     }
       echo "\n";
}
?>

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

nabeatsu1

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