Используя тот факт, что вы можете выполнять операции над множествами, выполняя &
(пересечение), -
(различие) и |
(объединение).
Очевидно, я не реализовал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]