Quiero crear diferentes métodos para una clase llamada Multiset .
Tengo todos los métodos requeridos, pero no estoy seguro de cómo escribir los métodos de intersección, unión y subconjunto.
Para intersección y unión, mi código comienza así:
def intersect(var)
x = Multiset.new
end
Aquí hay un ejemplo:
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
entonces la intersección de Xy Yes [1, 2].
ruby
union
intersection
subset
usuario487743
fuente
fuente

Respuestas:
Aprovechando el hecho de que puede establecer operaciones en matrices haciendo
&(intersección),-(diferencia) y|(unión).Obviamente no implementé el MultiSet para especificar, pero esto debería ayudarlo a comenzar:
fuente
setcomo nombre variable de una matriz simple; (2) Replicando todo lo queArrayya hace. Si el OP quiere agregar funcionalidad a laArrayclase con algunos métodos adicionales, simplemente debe hacer:class MultiSet < Array def inclusion?(other) Set.new(self).subset?(Set.new(other)) end endSupongo
XyYson matrices? Si es así, hay una manera muy simple de hacer esto:Fuente
fuente
Multiset < Array.(x & y) | (y & z) | (x & z)&=,|=y-=si también desea almacenar el valor de inmediato como lo hice! :)Si se
Multisetextiende desde laArrayclaseUNIÓN
DIFERENCIA
INTERSECCIÓN
Para obtener más información sobre los nuevos métodos en Ruby 2.6, puede consultar esta publicación de blog sobre sus nuevas características
fuente