パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「配列のすべての要素が条件を満たすならtrueを返す」関数に空配列を渡したらtrueかfalseか?」記事へのコメント

  • 空の配列には、条件を満たす要素は一つも無い。
    つまり、falseだと思う。

    • Re: (スコア:4, すばらしい洞察)

      by Anonymous Coward

      「すべての要素が条件を満たすか?」というだけ話に、「かつ最低でも一つは条件を満たすこと」という別の条件を勝手に加えて判断してるね
      論理的にも等価に言い換えるなら、「いずれかの要素が条件を満たさないことはないか?」だよ
      A and B and ... = not(notA or notB or ...)

      空配列は空であるが故に、いずれかの要素が条件を満たさないことはない、のでtrue

      • by Anonymous Coward

        それを言うなら「すべての要素」と書いているのに、「『要素が無い』を許す」という別の条件を勝手に加えて判断してません?

        • by Anonymous Coward

          0個の要素がすべて条件に合致しました、と条件を加えることなく満たしてるね
          自然言語ならまだしも、プログラム言語という数学や論理上の話なら極めて普通の処理だと思うけどそうは思わないってこと?

          「『要素が無い』を許さない」という別の条件を勝手に加えて判断するのはやめましょう

          • by Anonymous Coward

            数学や論理上の話では、「未定義」を「存在する(∃)」扱いにすることはないよ。勉強して出直してこい。

            • by nim (10479) on 2023年06月04日 12時21分 (#4471586)

              数学およびその一分野であるコンピュータサイエンスでは、true になるで合ってるよ。

              「∀A∈S に対して C(S)=真」が条件式なんだから、Sが空集合なら式は真になる。

              親コメント
              • by Anonymous Coward

                Sが空集合なら式は真、という結論には異論はないんですが、

                数学的に考えちゃうと、常にreturn trueする恒真関数も、
                「配列のすべての要素が条件を満たすならtrueを返す」関数
                の条件を満たしちゃうんだよなぁ。

                「必要十分条件である」という暗黙の前提があると考えれば曖昧さはなくなるんだけど

                たまに
                条件Aを満たすならtrueを返し、条件Bを満たすならfalseを返す関数
                みたいに定義されていて、AもBも満たさない場合どうすんねんって
                暗黙の前提の想像もできない仕様を見かける。

                その場合は3値論理として不定/未定義だなってプログラム的に組みやすいように実装したりすると、
                あとで(仕様にない挙動を思い込みで決めつけて)「AもBも満たさない場合の挙動がおかしい」とかいってクレームが来るのが定番なので
                仕様精査大切。

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

処理中...