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 件のコメント:
コメントを投稿