我想为一个名为Multiset的类创建不同的方法.
我有所有必需的方法,但我不确定如何编写交集、并集和子集方法.
对于交集和并集,我的代码是这样开始的:
def intersect(var)
x = Multiset.new
end
下面是一个例子:
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
那么X
和Y
的交点是[1, 2]
.
我想为一个名为Multiset的类创建不同的方法.
我有所有必需的方法,但我不确定如何编写交集、并集和子集方法.
对于交集和并集,我的代码是这样开始的:
def intersect(var)
x = Multiset.new
end
下面是一个例子:
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
那么X
和Y
的交点是[1, 2]
.
利用这一事实,您可以通过执行&
(相交)、-
(差)和|
(并集)对数组执行集合操作.
显然,我没有实现MultiSet to spec,但这应该让您开始:
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]