Ruby 配列 集合演算

Rubyで配列の集合演算

Rubyで配列の集合演算を行い、Ruby on Railsのモデルで例を紹介します。積集合、和集合、差集合について、Ruby言語から配列の操作を行います。

Shou Arisaka
1 分で読める
2018年9月22日

Rubyで配列の集合演算を行い、Ruby on Railsのモデルで例を紹介します。積集合、和集合、差集合について、Ruby言語から配列の操作を行います。

例えば、複数のキーワードの両方を含むWebページの一覧は積集合を求めていることになり、複数のキーワードのいずれかを含むWebページの一覧は和集合を求めていることになる。
``` p a & b # 積集合 p a | b # 和集合 p a - b # 差集合
[Ruby: 集合演算を行うには? - Build Insider](https://www.buildinsider.net/language/rubytips/0025)

Railsで具体例を上げてみる。
```ruby

Hashmodel.where(title:"title").ids
=> [1, 2]

Hashmodel.tagged_with("fuga").by_join_date.ids
=> [6, 1]

# titleが"title"でありかつ、"fuga"というタグがつけられているhashmodelのidを取得する(積集合)
Hashmodel.where(title:"title").ids & Hashmodel.tagged_with("fuga").by_join_date.ids
=> [1]

# 和集合;OR検索された場合を求める
Hashmodel.where(title:"title").ids | Hashmodel.tagged_with("fuga").by_join_date.ids
=> [1, 2, 6]

# ちなみに`+`を使用すると、配列がマージされる形になる。値が重複しているので、和集合ではない。
Hashmodel.where(title:"title").ids + Hashmodel.tagged_with("fuga").by_join_date.ids
=> [1, 2, 6, 1]

Ruby: 集合演算を行うには? - Build Insiderでは、集合の類似度を求めるジャッカード係数などについても紹介されている。 興味があれば読んでみるといいかもしれません。

この記事をシェア

Shou Arisaka 2018年9月22日

🔗 リンクをコピー