Я хочу создать разные методы для класса с именем Multiset .
У меня есть все необходимые методы, но я не уверен, как писать методы пересечения, объединения и подмножества.
Для пересечения и объединения мой код начинается так:
def intersect(var)
x = Multiset.new
end
Вот пример:
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
тогда пересечение X
и Y
есть [1, 2]
.
ruby
union
intersection
subset
user487743
источник
источник
Ответы:
Используя тот факт, что вы можете выполнять операции над массивами, используя
&
(пересечение),-
(различие) и|
(объединение).Очевидно, я не реализовал MultiSet в спецификации, но это должно помочь вам начать:
источник
set
как имя переменной простого массива; (2) Репликация всего, чтоArray
уже делает. Если ОП хочет добавить функциональность вArray
класс с помощью некоторых дополнительных методов, вы должны просто сделать следующее:class MultiSet < Array def inclusion?(other) Set.new(self).subset?(Set.new(other)) end end
Я предполагаю,
X
иY
массивы? Если это так, есть очень простой способ сделать это:Источник
источник
Multiset < Array
.(x & y) | (y & z) | (x & z)
&=
,|=
и-=
если вы хотите немедленно сохранить значение , как я сделал! :)Если
Multiset
выходит изArray
классаUNION
РАЗНИЦА
INTERSECTION
Для получения дополнительной информации о новых методах в Ruby 2.6, вы можете проверить этот пост в блоге о его новых функциях
источник