Как я могу получить пересечение, объединение и подмножество массивов в Ruby?
Я хочу создать различные методы для класса под названием Multiset.
у меня есть все необходимые методы, но я не уверен, как написать методы пересечения, объединения и подмножества.
для пересечения и объединения, мой код начинается так:
def intersect(var)
x = Multiset.new
end
вот пример:
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
после пересечения X
и Y
- это [1, 2]
.
2 ответа:
используя тот факт, что вы можете сделать набор операций над массивами, делая
&
(перекресток),-
(разницу), и|
(Союза).очевидно, что я не реализовал 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]