アカウント名:
パスワード:
空の配列には、条件を満たす要素は一つも無い。つまり、falseだと思う。
「すべての要素が条件を満たすか?」というだけ話に、「かつ最低でも一つは条件を満たすこと」という別の条件を勝手に加えて判断してるね論理的にも等価に言い換えるなら、「いずれかの要素が条件を満たさないことはないか?」だよA and B and ... = not(notA or notB or ...)
空配列は空であるが故に、いずれかの要素が条件を満たさないことはない、のでtrue
それを言うなら「すべての要素」と書いているのに、「『要素が無い』を許す」という別の条件を勝手に加えて判断してません?
0個の要素がすべて条件に合致しました、と条件を加えることなく満たしてるね自然言語ならまだしも、プログラム言語という数学や論理上の話なら極めて普通の処理だと思うけどそうは思わないってこと?
「『要素が無い』を許さない」という別の条件を勝手に加えて判断するのはやめましょう
数学およびその一分野であるコンピュータサイエンスでは、true になるで合ってるよ。
「∀A∈S に対して C(S)=真」が条件式なんだから、Sが空集合なら式は真になる。
条件を満たすことはないのと全く同じように満たさないわけでもないので不定条件を満たすと満たさないを対等に扱ってないのはおかしいよ
右辺と左辺がイコールで結ばれてるのに気が付かないのか?trueとして考えれば、両辺は全く同じ様に成り立つ
0個の要素がすべて条件に合致=0個の要素がいずれも条件に非合致ではなかった
falseの場合は無理おかしいと思うのがおかしい、論理的に考えよう
> 空配列は空であるが故に、いずれかの要素が条件を満たさないことはない
?空集合に対して ( notA or notB or .. ) の値が false であるとどうして断言できるんだ?
ああわかった。not(not N1 or not N2 or ...not Nn or ....) に対して n=0 の場合は未定義なのにあたかも定義されている(n=0でも成立する)かのように書いているから、一見正しいように見えるのか。
知識がないので分かったと勘違いしてるなn=0 の場合は未定義、なんてことはない要素をゼロの空集合は、ある条件に合致する集合に必ず含まれる、というのは論理的に定義されてるルールだ
https://wiis.info/math/set/set/empty-set/ [wiis.info]空集合は任意の集合の部分集合です。
君がその基礎的なルールを知らんから間違ってるように見えるだけn=0の場合、空集合となるので、右辺の集合の一部当然、左辺の集合の一部も式通りに成り立つので、論理的にも矛盾しない
そして、逆にfalseとする場合は式が成り立たずに矛盾するので間違いなのでtrueしかありえない
空配列は空であるが故にtrueでもfalseでもない。trueでもfalseでもない値に対して論理演算は定義されていない。したがってandもorもnotも計算できない。
>空配列は空であるが故に、いずれかの要素が条件を満たさないことはない、のでtrue「値が存在しない場合はtrueとして扱う」という別の条件を勝手に加えていますね。
> 空配列は空であるが故にtrueでもfalseでもない。> 「値が存在しない場合はtrueとして扱う」という別の条件を勝手に加えていますね。
違います、嘘書かないように空集合は論理的にすべての集合の部分集合というのは、公理的集合論の基礎ですつまり、空集合であるが故に、ある条件の集合には*必ず*含まれます
空集合のルールに、特定の集合には含まれない、などというルールを勝手に付け加えているのはあなた
空集合は全ての集合の部分集合だから「全てが真」の集合の部分集合でもあります。以上。
> 空集合は全ての集合の部分集合だから「全てが真」の集合の部分集合でもあります。以上。はい、なのでtrueになるという話をしてます「値が存在しない場合はtrueとして扱う」とは、論理的な大前提なので何も条件を付け加えていないので反論になっておらず、また「配列のすべての要素が条件を満たすならtrueを返す」関数を定義されてるなら、空の配列を渡したらその集合の部分集合になるので必ずtrueになります
# レス先あってます?
これはおかしい。
空の配列の場合言うなれば not は何かという話で、それについては、ド・モルガンの法則は何も言っていない。
「配列のすべての要素が条件を満たすならtrueを返す」関数というのは、配列の要素毎の条件判定の論理積を返す、と解するのが自然な気がする。Excel の AND 関数みたいな。
論理積を計算するのにパラメータが 0個だったら、やっぱり例外を投げるべきではないかな。
とは言え、そもそも人によって正解とするプログラムが違うのだったら仕様の定義が問題だと思うけど。
その理屈だとパラメータが1個の場合も論理積を計算できないのでは?
イメージとしては excel の and 関数で、パラメータは 1個以上かな、と。もしくはベン図でいうと配列要素数分の真の重なり部分かどうかを返す関数と考えれば、1つの真偽の集合しか与えられなくても答えは出る、と。
i=1 から n までの総和Σにおいても、n=1 のときは要素単体ですが、n=0 のときに単位元 0 を返すのは約束事もしくは定義であって自明のことではないのでは、という認識でいます。今回の関数は総和ならぬ総論理積だと思うので、問いは空論理積はどうあるべきか、という話ではないでしょうか。
# 自信なし
Wikipedia の空和や空積の説明には「定義することの妥当性」という項があり、これに従えば総論理積でも同様に単位元(=真)を返すと「定義するのが妥当」なのかもしれません。この妥当性を当然と感じるセンスが「良いプログラマかどうかの一つの境目」と言いたいのかな?
私の感覚としてはきちんとドキュメント化する(またはドキュメント化を要求する)方が良いプログラマではないか、というのは変わりませんが。
% irbirb(main):001:0> [1,2,3].all?{ |x| x > 0 }=> trueirb(main):002:0> [1].all?{ |x| x > 0 }=> trueirb(main):003:0> [].all?{ |x| x > 0 }=> trueRuby 3.2 リファレンスマニュアル Array#all? [ruby-lang.org] 空配列については書かれていないけど、自明というスタンスなのかな…
けど、私が普通にプログラムを書くと
①返り値の初期値としてTRUEをセット②要素を一つづつチェックして、条件を満たさなければ返り値にFALSEをセット (FALSEになったらその先の要素のチェックはスキップ)
という感じになるから、要素が0だとTRUEを返してしまいそうだ。
やっぱり要件に「要素数が0の時の返り値」を指定してくれないと、最初に要素数のチェックまで思い至らないかも。
えー、true から始めるの?なんか怖いわ
> 言葉尻配列かぁ、sizeを渡してもらわんとなぁ。
これに一票かなあ。決められてない以上どう返しても明確に「間違い」とは言えないと思うけど、私も普通に書くとそうなります。
決められてない以上どう返しても明確に「間違い」とは言えないと思うけど、私も普通に書くとそうなります。
あかんでしょう「決められてない以上どう返しても間違い」です仕様を確認してから実装しましょうたまたま未策定の仕様に未然に合致していたとしても勝手な判断で実装してはいけません自身が仕様策定者の場合でも仕様を策定してから実装が正しい
/*仕様書が貰えない場合はどうするかって?そんなデスマからはとっとと去りましょう*/
同意。条件がキモで、大抵は配列の中にある値を使用して判定するよね
まずは条件を定義してからの話ですね
ところが、「店内で飲酒している人が全員20歳以上なら適法」という判定に「空ならfalae」を使うと、店内に客がいなかったり全員がノンアルを飲んでいたりするとアウトになってしまう。で、なぜかロジックは修正されず「誰か常に酒を飲む奴を配置する」なんてパッチが当てられたりするわけですな(笑)
そらそうよ知りたいのは、店内に20歳未満なのに飲酒してるやつがいたら違法であって適法かどうかはどうでもいいもの要は仕様バグってこと
「店内で飲酒している人が一人でも20歳未満なら違法」という判定に「空ならtrue」を使うと?
「一人でも」はallじゃなくてanyでしょ。anyは配列が空ならfalseを返す。
なるほど。「店内で飲酒している人が全員20歳未満なら違法」とかちょっと変な例になっちゃうのか。
それロジックがバグってる。飲酒している人が全員20歳以上という関数にしたいなら、店内に客がいた場合に処理がされるべき物で、空の状態で判定しようとする方がおかしい。処理前のエラー処理であって、条件指定がそもそもおかしい。
そういう処理を考えるなら、店内に飲酒している20歳以下の人がいるという関数にした方が良い。
それがこの記事(が引用しているツイート)やコメント相手の主旨なんすけど。
なぜ君はさっきから「false」を「falae」と書くの?
老眼が始まったかもしれない
騙されてはいけない、きっと3つの値があるんだ
仕様は、あくまでも "店内で飲酒している人" という前提があり、それが"全員20以上なら適法" であり年齢による飲酒をテーマにしている以上、適法か違法かのどちらかになると思うので"店内で飲酒している人"が"全員20以上でなければ"違法になるのはあきらか。
適法か違法かは、人がいないとtrue or falseといえないところなので仕様不確定でどちらか一方を返すのは適切でないので、例外を投げるべき。
つまり、適法か違法かはある前提配下でしか利用できないので、その前段で、法を判断できる状態の配列なのかプログラマがジャッチしてあげる必要がある。
そうでなければ、法で
Segmentation falutだったりして
言葉尻ではなく本質だろう。そういう所を定義するのが良いプログラマ。
これについては、問題の性質によるので、プログラムとしては「どれもありえる」。
曖昧な処理は、仕様書に明記しろってことだな。
バグになりがちなケースですねかもしれない運転・だろう運転にも通ずる
今時は条件はラムダ式をもらってそれに要素を適用して結果を返すもんじゃないですかね。条件があらかじめわかっているということはないです。私なら何も指定がなければtrueにしますね。評価すべきものがないというのは処理が続行できるであることが多いですから。それでは困ると言われたら例外にすることを提案すると思います。
この方の発言で漸く問題提起の意味を理解したわ。
判定条件は外部から数十通り与えられ、その条件に従って要素を判定し結果のみを返す事を求められる関数の場合、空配列はどう扱うか?という話なのね。
その関数の前に空配列チェックしろって話なんだけど、それはそういう視点で語るから言える話であり、あくまで関数内でどう結論づけるかが主題、ということかな。
となると、やはりtrueが正解なのかな?判定処理が働かない以上、falseにする理由がないように思える。箱の中の違反品チェックで、空箱を違反扱いするのも変だし。
今どきは標準ライブラリにあるでしょうねそしておそらくは数学や論理学の慣習に合わせてtrueになってるでしょうね
わかる、これ逆に、「配列のすべての要素が条件を満たすならtrueを返す」を「こんなんアレだろ」とプログラマの直感で作ると空配列でtrueになっちゃって、日本語的には「配列のすべての要素が条件を満たすならtrueを返す」からその条件でtrueを返す仕様は読み取れないから、trueを返すのはバグでは?と言われるとちょっと答えに窮する所だと思う。
# 「いやいやいやそうなんだけどtrueを返すべきなんだって!全てがtrueなら=ひとつもfalseが無ければなんだって!」
まったくその通りで、intArray.All( (i) => {i > 0}) みたいな話で、それを再発明するというのならtrueを返す以外の選択肢は無いんだよね。それで困るというのであれば、それはその関数の中で処理する話じゃない。
> 空の配列には、条件を満たす要素は一つも無い。空の配列には、条件を満たさない要素は一つも無いんだが?要素がそもそも無いんだからなというわけでその考え方は破綻してる
破綻しないよ。これは自然言語とプログラマの常識がバッティングするって話で、常識ならtrue、仕様通りならfalseが正解。
「配列のすべての要素が条件を満たせばtrue」ってのは、配列のすべての要素が条件を満たす場合のみ真で、他の場合は全部偽にするしかない。後者にはもちろん配列に要素がない場合も含まれる。実装はあまり綺麗にならないけど、実際にこういう要求をされることはある。
『配列のすべての要素が条件を満たす場合のみ真』=『配列のいずれかの要素が条件を満たさないことがない場合のみ真』空の配列には、条件を満たさない要素は一つもないだから論理的に破綻してる
> 他の場合は全部偽にするしかない。他の場合じゃなくて数学的にも論理的にも完全に同じ条件に合致してるから『真にするしかない』んだよ、分かった?
この人に仕事を依頼すると、境界条件で穴が開きそう…
こんな境界条件で穴を開けそうだと具体例の1つも出せない人と仕事することはないだろうから心配しなくていいよそしてこの場合はもちろん偽にするしかないと境界を間違えてるやつと仕事したけりゃお好きにどうぞ
0個の要素すべてが条件を満たしていますが。
条件チェックした数は0だから当然条件を満たした数も0なわけで、正と回答するのも正確では無いでしょ
配列の「すべての要素」は「全N個のうちN個」だし、配列は要素数に0を許すのだから正だと思いますが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
言葉尻? (スコア:2)
空の配列には、条件を満たす要素は一つも無い。
つまり、falseだと思う。
Re:言葉尻? (スコア:4, すばらしい洞察)
「すべての要素が条件を満たすか?」というだけ話に、「かつ最低でも一つは条件を満たすこと」という別の条件を勝手に加えて判断してるね
論理的にも等価に言い換えるなら、「いずれかの要素が条件を満たさないことはないか?」だよ
A and B and ... = not(notA or notB or ...)
空配列は空であるが故に、いずれかの要素が条件を満たさないことはない、のでtrue
Re: (スコア:0)
それを言うなら「すべての要素」と書いているのに、「『要素が無い』を許す」という別の条件を勝手に加えて判断してません?
Re: (スコア:0)
0個の要素がすべて条件に合致しました、と条件を加えることなく満たしてるね
自然言語ならまだしも、プログラム言語という数学や論理上の話なら極めて普通の処理だと思うけどそうは思わないってこと?
「『要素が無い』を許さない」という別の条件を勝手に加えて判断するのはやめましょう
Re:言葉尻? (スコア:1)
数学およびその一分野であるコンピュータサイエンスでは、true になるで合ってるよ。
「∀A∈S に対して C(S)=真」が条件式なんだから、Sが空集合なら式は真になる。
Re: (スコア:0)
条件を満たすことはないのと全く同じように満たさないわけでもないので不定
条件を満たすと満たさないを対等に扱ってないのはおかしいよ
Re: (スコア:0)
右辺と左辺がイコールで結ばれてるのに気が付かないのか?
trueとして考えれば、両辺は全く同じ様に成り立つ
0個の要素がすべて条件に合致=0個の要素がいずれも条件に非合致ではなかった
falseの場合は無理
おかしいと思うのがおかしい、論理的に考えよう
Re: (スコア:0)
> 空配列は空であるが故に、いずれかの要素が条件を満たさないことはない
?
空集合に対して ( notA or notB or .. ) の値が false であるとどうして断言できるんだ?
Re: (スコア:0)
ああわかった。
not(not N1 or not N2 or ...not Nn or ....) に対して n=0 の場合は未定義なのにあたかも定義されている(n=0でも成立する)かのように書いているから、一見正しいように見えるのか。
Re:言葉尻? (スコア:2, 参考になる)
知識がないので分かったと勘違いしてるな
n=0 の場合は未定義、なんてことはない
要素をゼロの空集合は、ある条件に合致する集合に必ず含まれる、というのは論理的に定義されてるルールだ
https://wiis.info/math/set/set/empty-set/ [wiis.info]
空集合は任意の集合の部分集合です。
君がその基礎的なルールを知らんから間違ってるように見えるだけ
n=0の場合、空集合となるので、右辺の集合の一部
当然、左辺の集合の一部も式通りに成り立つので、論理的にも矛盾しない
そして、逆にfalseとする場合は式が成り立たずに矛盾するので間違い
なのでtrueしかありえない
Re: (スコア:0)
空配列は空であるが故にtrueでもfalseでもない。
trueでもfalseでもない値に対して論理演算は定義されていない。
したがってandもorもnotも計算できない。
>空配列は空であるが故に、いずれかの要素が条件を満たさないことはない、のでtrue
「値が存在しない場合はtrueとして扱う」という別の条件を勝手に加えていますね。
Re: (スコア:0)
> 空配列は空であるが故にtrueでもfalseでもない。
> 「値が存在しない場合はtrueとして扱う」という別の条件を勝手に加えていますね。
違います、嘘書かないように
空集合は論理的にすべての集合の部分集合というのは、公理的集合論の基礎です
つまり、空集合であるが故に、ある条件の集合には*必ず*含まれます
空集合のルールに、特定の集合には含まれない、などというルールを勝手に付け加えているのはあなた
Re: (スコア:0)
空集合は全ての集合の部分集合だから「全てが真」の集合の部分集合でもあります。以上。
Re: (スコア:0)
> 空集合は全ての集合の部分集合だから「全てが真」の集合の部分集合でもあります。以上。
はい、なのでtrueになるという話をしてます
「値が存在しない場合はtrueとして扱う」とは、論理的な大前提なので何も条件を付け加えていないので反論になっておらず、
また「配列のすべての要素が条件を満たすならtrueを返す」関数を定義されてるなら、空の配列を渡したらその集合の部分集合になるので必ずtrueになります
# レス先あってます?
Re: (スコア:0)
これはおかしい。
空の配列の場合言うなれば not は何かという話で、それについては、ド・モルガンの法則は
何も言っていない。
論理積計算ではないの? (スコア:2)
「配列のすべての要素が条件を満たすならtrueを返す」関数というのは、配列の要素毎の条件判定の論理積を返す、と解するのが自然な気がする。Excel の AND 関数みたいな。
論理積を計算するのにパラメータが 0個だったら、やっぱり例外を投げるべきではないかな。
とは言え、そもそも人によって正解とするプログラムが違うのだったら仕様の定義が問題だと思うけど。
Re:論理積計算ではないの? (スコア:2)
その理屈だとパラメータが1個の場合も論理積を計算できないのでは?
イメージとしては excel の and 関数で、パラメータは 1個以上かな、と。
もしくはベン図でいうと配列要素数分の真の重なり部分かどうかを返す関数と考えれば、1つの真偽の集合しか与えられなくても答えは出る、と。
i=1 から n までの総和Σにおいても、n=1 のときは要素単体ですが、n=0 のときに単位元 0 を返すのは約束事もしくは定義であって自明のことではないのでは、という認識でいます。今回の関数は総和ならぬ総論理積だと思うので、問いは空論理積はどうあるべきか、という話ではないでしょうか。
# 自信なし
Wikipedia の空和や空積の説明には「定義することの妥当性」という項があり、これに従えば総論理積でも同様に単位元(=真)を返すと「定義するのが妥当」なのかもしれません。この妥当性を当然と感じるセンスが「良いプログラマかどうかの一つの境目」と言いたいのかな?
私の感覚としてはきちんとドキュメント化する(またはドキュメント化を要求する)方が良いプログラマではないか、というのは変わりませんが。
% irb
irb(main):001:0> [1,2,3].all?{ |x| x > 0 }
=> true
irb(main):002:0> [1].all?{ |x| x > 0 }
=> true
irb(main):003:0> [].all?{ |x| x > 0 }
=> true
Ruby 3.2 リファレンスマニュアル Array#all? [ruby-lang.org] 空配列については書かれていないけど、自明というスタンスなのかな…
Re:言葉尻? (スコア:1)
けど、私が普通にプログラムを書くと
①返り値の初期値としてTRUEをセット
②要素を一つづつチェックして、条件を満たさなければ返り値にFALSEをセット
(FALSEになったらその先の要素のチェックはスキップ)
という感じになるから、要素が0だとTRUEを返してしまいそうだ。
やっぱり要件に「要素数が0の時の返り値」を指定してくれないと、最初に要素数のチェックまで思い至らないかも。
Re: (スコア:0)
えー、true から始めるの?
なんか怖いわ
Re: (スコア:0)
> 言葉尻
配列かぁ、sizeを渡してもらわんとなぁ。
Re: (スコア:0)
これに一票かなあ。
決められてない以上どう返しても明確に「間違い」とは言えないと思うけど、私も普通に書くとそうなります。
Re: (スコア:0)
決められてない以上どう返しても明確に「間違い」とは言えないと思うけど、私も普通に書くとそうなります。
あかんでしょう
「決められてない以上どう返しても間違い」です
仕様を確認してから実装しましょう
たまたま未策定の仕様に未然に合致していたとしても勝手な判断で実装してはいけません
自身が仕様策定者の場合でも仕様を策定してから実装が正しい
/*
仕様書が貰えない場合はどうするかって?
そんなデスマからはとっとと去りましょう
*/
Re: (スコア:0)
同意。
条件がキモで、
大抵は配列の中にある値を使用して判定するよね
まずは条件を定義してからの話ですね
Re: (スコア:0)
ところが、「店内で飲酒している人が全員20歳以上なら適法」という判定に「空ならfalae」を使うと、店内に客がいなかったり全員がノンアルを飲んでいたりするとアウトになってしまう。
で、なぜかロジックは修正されず「誰か常に酒を飲む奴を配置する」なんてパッチが当てられたりするわけですな(笑)
Re: (スコア:0)
そらそうよ
知りたいのは、店内に20歳未満なのに飲酒してるやつがいたら違法
であって適法かどうかはどうでもいいもの
要は仕様バグってこと
Re: (スコア:0)
「店内で飲酒している人が一人でも20歳未満なら違法」という判定に「空ならtrue」を使うと?
Re:言葉尻? (スコア:1)
「一人でも」はallじゃなくてanyでしょ。
anyは配列が空ならfalseを返す。
Re: (スコア:0)
なるほど。
「店内で飲酒している人が全員20歳未満なら違法」とかちょっと変な例になっちゃうのか。
Re: (スコア:0)
それロジックがバグってる。
飲酒している人が全員20歳以上という関数にしたいなら、店内に客がいた場合に処理がされるべき物で、
空の状態で判定しようとする方がおかしい。
処理前のエラー処理であって、条件指定がそもそもおかしい。
そういう処理を考えるなら、店内に飲酒している20歳以下の人がいるという関数にした方が良い。
Re: (スコア:0)
それがこの記事(が引用しているツイート)やコメント相手の主旨なんすけど。
Re: (スコア:0)
なぜ君はさっきから「false」を「falae」と書くの?
Re:言葉尻? (スコア:1)
老眼が始まったかもしれない
Re: (スコア:0)
騙されてはいけない、きっと3つの値があるんだ
Re: (スコア:0)
仕様は、あくまでも "店内で飲酒している人" という前提があり、それが"全員20以上なら適法" であり
年齢による飲酒をテーマにしている以上、適法か違法かのどちらかになると思うので
"店内で飲酒している人"が"全員20以上でなければ"違法になるのはあきらか。
適法か違法かは、人がいないとtrue or falseといえないところなので
仕様不確定でどちらか一方を返すのは適切でないので、例外を投げるべき。
つまり、適法か違法かはある前提配下でしか利用できないので、
その前段で、法を判断できる状態の配列なのかプログラマがジャッチしてあげる必要がある。
そうでなければ、法で
Re: (スコア:0)
Segmentation falutだったりして
Re: (スコア:0)
言葉尻ではなく本質だろう。
そういう所を定義するのが良いプログラマ。
これについては、問題の性質によるので、
プログラムとしては「どれもありえる」。
曖昧な処理は、仕様書に明記しろってことだな。
Re: (スコア:0)
バグになりがちなケースですね
かもしれない運転・だろう運転にも通ずる
Re: (スコア:0)
今時は条件はラムダ式をもらってそれに要素を適用して結果を返すもんじゃないですかね。
条件があらかじめわかっているということはないです。
私なら何も指定がなければtrueにしますね。評価すべきものがないというのは処理が続行できるであることが多いですから。
それでは困ると言われたら例外にすることを提案すると思います。
Re: (スコア:0)
この方の発言で漸く問題提起の意味を理解したわ。
判定条件は外部から数十通り与えられ、その条件に従って要素を判定し結果のみを返す事を求められる関数の場合、空配列はどう扱うか?という話なのね。
その関数の前に空配列チェックしろって話なんだけど、それはそういう視点で語るから言える話であり、あくまで関数内でどう結論づけるかが主題、ということかな。
となると、やはりtrueが正解なのかな?判定処理が働かない以上、falseにする理由がないように思える。
箱の中の違反品チェックで、空箱を違反扱いするのも変だし。
Re: (スコア:0)
今どきは標準ライブラリにあるでしょうね
そしておそらくは数学や論理学の慣習に合わせてtrueになってるでしょうね
Re: (スコア:0)
わかる、これ逆に、
「配列のすべての要素が条件を満たすならtrueを返す」を「こんなんアレだろ」とプログラマの直感で作ると空配列でtrueになっちゃって、
日本語的には「配列のすべての要素が条件を満たすならtrueを返す」からその条件でtrueを返す仕様は読み取れないから、
trueを返すのはバグでは?と言われるとちょっと答えに窮する所だと思う。
# 「いやいやいやそうなんだけどtrueを返すべきなんだって!全てがtrueなら=ひとつもfalseが無ければなんだって!」
Re: (スコア:0)
まったくその通りで、intArray.All( (i) => {i > 0}) みたいな話で、それを再発明するというのならtrueを返す以外の選択肢は無いんだよね。
それで困るというのであれば、それはその関数の中で処理する話じゃない。
Re: (スコア:0)
> 空の配列には、条件を満たす要素は一つも無い。
空の配列には、条件を満たさない要素は一つも無いんだが?
要素がそもそも無いんだからな
というわけでその考え方は破綻してる
Re: (スコア:0)
破綻しないよ。これは自然言語とプログラマの常識がバッティングするって話で、常識ならtrue、仕様通りならfalseが正解。
「配列のすべての要素が条件を満たせばtrue」ってのは、配列のすべての要素が条件を満たす場合のみ真で、他の場合は全部偽にするしかない。後者にはもちろん配列に要素がない場合も含まれる。実装はあまり綺麗にならないけど、実際にこういう要求をされることはある。
Re: (スコア:0)
『配列のすべての要素が条件を満たす場合のみ真』=『配列のいずれかの要素が条件を満たさないことがない場合のみ真』
空の配列には、条件を満たさない要素は一つもない
だから論理的に破綻してる
> 他の場合は全部偽にするしかない。
他の場合じゃなくて数学的にも論理的にも完全に同じ条件に合致してるから『真にするしかない』んだよ、分かった?
Re: (スコア:0)
この人に仕事を依頼すると、境界条件で穴が開きそう…
Re: (スコア:0)
こんな境界条件で穴を開けそうだと具体例の1つも出せない人と仕事することはないだろうから心配しなくていいよ
そしてこの場合はもちろん偽にするしかないと境界を間違えてるやつと仕事したけりゃお好きにどうぞ
Re: (スコア:0)
0個の要素すべてが条件を満たしていますが。
Re: (スコア:0)
条件チェックした数は0だから当然条件を満たした数も0なわけで、正と回答するのも正確では無いでしょ
Re:言葉尻? (スコア:1)
配列の「すべての要素」は「全N個のうちN個」だし、
配列は要素数に0を許すのだから正だと思いますが。