以前、
という記事を書きましたが、今回はそのギャグをバージョンUPさせました。
「3の倍数と3の付く数字のときだけアホになり、5の倍数のときは犬っぽくなります」
実は、世界のナベアツさんのギャグは、「3の倍数と3の付く数字のときだけアホ」になっているわけではありません。
以前YoutubeにUPされていた動画をよく見ると、ナベアツさんは、「5の倍数のとき犬っぽくなる」とおっしゃってました。
これはプログラミングのネタ的においしそうです。というわけで、「3の倍数と3の付く数字のときだけアホになり、5の倍数のときは犬っぽくなります」を忠実に再現してみました。
まず最初に要件定義をしよう!
最初、自分でもいろいろとコードを書いてみました。しかし、どうも上手く動かない…。プログラミング掲示板で質問を投稿して、教えていただいた回答の1つに、「最初に要件定義をしっかりしましょう」という回答をいただきました。
そういや要件定義なんて決めてなかったな~。もっとも要件定義と言うより、もっとかる~く「条件」と言う具合に考えてたものはあります。
- 3の倍数と3のつく数字のときだけ「アホ」になる。
- 5の倍数のときは「ワン」と吠える。
- 3と5の公倍数のときは「アホワン」と吠える。
でも、この要件定義だと仮に40までカウントしたときに、「35」なんて数字が来たときは、ど~すんの?と言うツッコミがきそう。
「35」は3で割り切れないけど3が含まれる数字ですが、その動画を見ると、世界のナベアツさんは「アホっぽい犬のように吠える」というギャグになっています。
ということは、要件定義は3つでは足りません。4つの要件定義にする必要があります。
- 3の倍数と3のつく数字のときだけ「アホ」になる。
- 5の倍数のときは「ワン」と吠える。
- 3と5の公倍数のときは「アホワン」と吠える。
- 3で割り切れないけど3が含まれる数字は「アホワン」と吠える。
プログラミングをする前には要件定義を
ということはプログラムがどうこういう以前に、最初に要件未定義の部分があるから、つまずいていたんやね…(汗
各言語の初心者用の本にはそんなこと書いてへんかったなぁ。(ひょっとしたら私が見落としてだけかもしれませんが)
ただ「3の倍数と3の付く数字のときだけアホになります」というギャグに、「5の倍数のときは犬っぽくなる」というギャグを付け足せれば、ええわ~と思っていたんですが、そういうわけではないんですね。
プログラムを組む仕事は、定義/未定義を見分けるということも必要なんか~。
「3の倍数と3の付く数字のときだけアホになり、5の倍数のときは犬っぽくなる」コード
最後に出来上がった一応、JavaScriptによるコードを紹介しておきます。リンクを貼っておきます。
[php]
for (var i = 1; i <= 40; i++) {
var c3f = /[3]/.test(i.toString());
var d3f = i % 3 == 0 ? true : false;
var d5f = i % 5 == 0 ? true : false;
document.write(‘世界のナベアツ→’);
if(d3f && d5f) {
document.write(i + ‘ : アホワン
‘);
} else if(d5f && c3f){
document.write(i + ‘ : アホワン
‘);
} else if(d5f){
document.write(i + ‘ : ワン
‘);
} else if(d3f || c3f){
document.write(i + ‘ : アホ
‘);
} else document.write(i+’ :
‘);
}
[/php]
別解としては、こんな書き方もあるようです。
[php]
for (var i = 1; i <= 50; i++) {
var text = i.toString();
var target = /[3]/.test(text);
if (i % 3 === 0 || target) {
text = text + ‘アホ’;
}
if (i % 5 === 0) {
text = text + ‘ワン!’
}
document.write(‘世界のナベアツ:’ + text + ‘
‘);
}
[/php]