世界のナベアツ問題からみる要件定義の大切さ

nabeatsu

以前、

という記事を書きましたが、今回はそのギャグをバージョン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]

nabeatsu

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次