小编典典

如何在 Ruby 中获取数组的交集、联合和子集?

all

我想为名为Multiset的类创建不同的方法。

我有所有必需的方法,但我不确定如何编写交集、联合和子集方法。

对于交集和联合,我的代码是这样开始的:

def intersect(var)
  x = Multiset.new
end

这是一个例子:

X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]

那么 和 的X交点Y[1, 2]


阅读 146

收藏
2022-07-27

共1个答案

小编典典

利用您可以通过执行&(intersection)、-(difference) 和|(union) 对数组执行集合操作的事实。

显然,我没有按照规范实现 MultiSet,但这应该可以帮助您入门:

class MultiSet
  attr_accessor :set
  def initialize(set)
    @set = set
  end
  # intersection
  def &(other)
    @set & other.set
  end
  # difference
  def -(other)
    @set - other.set
  end
  # union
  def |(other)
    @set | other.set
  end
end

x = MultiSet.new([1,1,2,2,3,4,5,6])
y = MultiSet.new([1,3,5,6])

p x - y # [2,2,4]
p x & y # [1,3,5,6]
p x | y # [1,2,3,4,5,6]
2022-07-27