1ヶ月ほど前に「配列のすべての要素が条件を満たすならtrue
を返す」関数に空配列を渡したらtrue
かfalse
か?というツイートが話題になったそうです。
多分自分ならこういうふうに書くかな。
function kansuu(hairetu) { for (const youso of hairetu) { if (!jouken(youso)) { // 1つでも条件を満たさなければfalseを返す return false; } } return true; }
なので空配列を渡したらtrue
を返しちゃいますね。
そもそも本来は「仕様を(依頼元に、もしくは要求仕様から)確認し、それに応じたコードを書ける人」がいいプログラマーだと思います。
はい、ワイは良くないプログラマーです。
なお、実際のシステム云々は置いておいて数学(集合論、論理学)としての話であれば、true
が正解です。上記ストーリーのこのコメントが簡潔に表現しています。
- 「配列のすべての要素」とは、「全N個のうちN個」である
- 問題の関数は空配列(N=0)を許す
- 空配列が渡された際は「全0個のうち0個」の要素が条件を満たしている
- ゆえに、空配列が渡された際は
true
を返すべきである
0 件のコメント:
コメントを投稿