61514


ベン図みたいのを知りたい時

[code]

    p (array1 | array2).size
    p (array1 & array2).size
    p (array1 - (array1 & array2)).size
    p (array2 - (array1 & array2)).size
    
[/code]

ってやってるけど、もっと賢い方法を知らないだけの気がしています。  
なにかオススメの方法はありますでしょうか？

また、配列が2つ以上のときでもオススメの方法とかもありますか？


CC BY-SA 4.0
2019-12-17T07:33:12.797
61506
2020-03-06T06:23:30.747
32772
question
ruby
Rubyで2つの配列の差分をさっさと知る方法（集合）


とりあえず「集合 `a` に含まれていて集合 `b` に含まれない要素の数」を求めるのに `(a - (a & b)).size` は冗長で、

[code]

    (a - b).size
    
[/code]

とするだけで求まります。


CC BY-SA 4.0
2019-12-17T09:26:35.650
61514
2019-12-17T09:26:35.650
19110
61506
answer


配列が3つ以上の時は `[array1, array2, array3].inject(:&)`(積集合) とか `[array1, array2,
array3].inject(:|)`(和集合) ですかね。

\-- この回答は、[metroplis](https://ja.stackoverflow.com/users/16894/metropolis)
さんの[コメント](https://ja.stackoverflow.com/questions/61506/ruby%E3%81%A72%E3%81%A4%E3%81%AE%E9%85%8D%E5%88%97%E3%81%AE%E5%B7%AE%E5%88%86%E3%82%92%E3%81%95%E3%81%A3%E3%81%95%E3%81%A8%E7%9F%A5%E3%82%8B%E6%96%B9%E6%B3%95-%E9%9B%86%E5%90%88/61514#comment66977_61506)をコミュニティ
wiki として回答化したものです。


CC BY-SA 4.0
2020-03-06T06:23:30.747
63625
2020-03-06T06:23:30.747
19110
61506
answer