アカウント名:
パスワード:
空の配列には、条件を満たす要素は一つも無い。つまり、falseだと思う。
「配列のすべての要素が条件を満たすなら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] 空配列については書かれていないけど、自明というスタンスなのかな…
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
言葉尻? (スコア:2)
空の配列には、条件を満たす要素は一つも無い。
つまり、falseだと思う。
論理積計算ではないの? (スコア:2)
「配列のすべての要素が条件を満たすならtrueを返す」関数というのは、配列の要素毎の条件判定の論理積を返す、と解するのが自然な気がする。Excel の AND 関数みたいな。
論理積を計算するのにパラメータが 0個だったら、やっぱり例外を投げるべきではないかな。
とは言え、そもそも人によって正解とするプログラムが違うのだったら仕様の定義が問題だと思うけど。
Re: (スコア:0)
その理屈だとパラメータが1個の場合も論理積を計算できないのでは?
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] 空配列については書かれていないけど、自明というスタンスなのかな…