rubyのArrayで、
和集合・積集合・差集合をしたいとき、
それぞれ「 |
」・「 &
」・「 -
」でできます。
また、発展として対称差集合・補集合をしてみます。
ちなみに、rubyには、集合を表すSetクラスも用意されています。([参考]Setクラスでの集合)
和集合「|
」
[1,1,2,3,3] | [3,4,5]
# => [1, 2, 3, 4, 5]
重複している要素は取り除かれます。
積集合「&
」
[1,1,2,3,3] & [3,4,5]
# => [3]
重複している要素は取り除かれます。
差集合「-
」
[1,1,2,3,3] - [3,4,5]
=> [1, 1, 2]
左辺で重複していて右辺にある要素は重複している要素は取り除かれますが、
左辺で重複していて右辺にはない要素は除かれないです。
発展
対称差集合
差集合によって求めるパターン(重複あり)
a = [1,1,2,3,3]
b = [3,4,5]
(a - b) + (b - a)
# => [1, 1, 2, 4, 5]
和集合と積集合によって求めるパターン(重複なし)
a = [1,1,2,3,3]
b = [3,4,5]
a_or_b = (a | b)
a_and_b = (a & b)
a_or_b.delete_if do |item|
a_and_b.include?(item)
end
補集合
u = [1,2,3,4,5]
a = [1,2]
u.delete_if do |item|
a.include?(item)
end
[画像引用先]:http://www.wikiwand.com/ja/%E9%9B%86%E5%90%88#/.E5.A4.96.E9.83.A8.E3.83.AA.E3.83.B3.E3.82.AF