如何获得Ruby中的交集,联合和数组的子集?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

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

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

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

def intersect(var)
  x = Multiset.new
end

这里是一个例子:

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

然后的交点XY[1, 2]

提问于
用户回答回答于

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]
用户回答回答于

假设X并且Y是数组?如果是这样,有一个非常简单的方法来做到这一点:

x = [1, 1, 2, 4]
y = [1, 2, 2, 2]

# intersection
x & y            # => [1, 2]

# union
x | y            # => [1, 2, 4]

# difference
x - y            # => [4]

资源

扫码关注云+社区