Je souhaite créer différentes méthodes pour une classe appelée Multiset .
J'ai toutes les méthodes requises, mais je ne sais pas comment écrire des méthodes d'intersection, d'union et de sous-ensemble.
Pour l'intersection et l'union, mon code commence comme ceci:
def intersect(var)
x = Multiset.new
end
Voici un exemple:
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
puis l'intersection de X
et Y
est [1, 2]
.
ruby
union
intersection
subset
user487743
la source
la source
Réponses:
En utilisant le fait que vous pouvez effectuer des opérations de définition sur des tableaux en faisant
&
(intersection),-
(différence) et|
(union).Évidemment, je n'ai pas implémenté le MultiSet selon les spécifications, mais cela devrait vous aider à démarrer:
la source
set
comme nom de variable d'un tableau simple; (2) Reproduire tout ce qui faitArray
déjà. Si l'OP souhaite ajouter des fonctionnalités à laArray
classe avec des méthodes supplémentaires, vous devez simplement faire:class MultiSet < Array def inclusion?(other) Set.new(self).subset?(Set.new(other)) end end
Je suppose
X
etY
sont des tableaux? Si tel est le cas, il existe un moyen très simple de le faire:La source
la source
Multiset < Array
.(x & y) | (y & z) | (x & z)
&=
,|=
et-=
si vous voulez aussi stocker immédiatement la valeur comme je l'ai fait! :)Si
Multiset
s'étend de laArray
classeSYNDICAT
DIFFÉRENCE
INTERSECTION
Pour plus d'informations sur les nouvelles méthodes de Ruby 2.6, vous pouvez consulter ce billet de blog sur ses nouvelles fonctionnalités
la source