2010-12-04 10 views
5

¿Hay una implementación de la colección de bolsos (una colección como un conjunto, que cuenta cuántas veces se inserta un objeto)?¿Hay una implementación de bolsa en Ruby?

+0

Estoy buscando algo que sea lo más estándar posible. Preferiría una biblioteca central a una joya y una joya para codificar que ni siquiera es una joya. –

Respuesta

7

Sure! También se llama multiset. Aquí hay un nice ruby implementation.

+0

La documentación habla sobre ejecutar un script como root. ¿Hay un paquete de ubuntu que lo incluya? –

+0

no que yo sepa ... parece que tendrás que obtener la fuente de ese lado y construirla en tu extremo. –

+1

¿Es esto tan antiguo que es anterior a rubygems? –

6

Bastante simple de crear por su cuenta, ¿verdad?

class Bag 
    def initialize 
    @h = Hash.new{ 0 } 
    end 
    def <<(o) 
    @h[o] += 1 
    end 
    def [](o) 
    @h[o] 
    end 
end 

bag = Bag.new 
bag << :a 
bag << :b 
bag << :a 
p bag[:a], bag[:b], bag[:c], bag 
#=> 2 
#=> 1 
#=> 0 
#=> #<Bag:0x100138890 @h={:b=>1, :a=>2}> 
+0

Probablemente no tan rápido como el implementado en C. –

+1

@AndrewGrimm Probablemente no sea notablemente más lento dado que es una cuña muy ligera sobre Hash, que se implementa en C. – Phrogz

Cuestiones relacionadas