2010-12-04 6 views
5

가방 컬렉션 (컬렉션과 같은 컬렉션으로 개체 삽입 횟수 계산) 구현이 있습니까?Ruby에 백 구현이 있습니까?

+0

나는 가능한 한 표준적인 것을 찾고있다. 필자는 보석에 핵심 라이브러리를 선호하고 심지어 보석이 아닌 코드를 작성하는 보석을 선호합니다. –

답변

7

확실! multiset이라고도합니다. 여기에 a가있다 nice ruby implementation.

+0

설명서는 루트로 스크립트를 실행하는 방법에 대해 설명합니다. 그것을 포함하는 우분투 패키지가 있습니까? –

+0

내가 알고 있는게 아니라 ... 당신이 그쪽으로부터 소스를 얻어 내고 그것을 끝까지 만들어야 만하는 것처럼 보입니다. –

+1

이것은 너무 오래되어서 루비 젬을 선주문합니까? –

6

매우 쉽게 당신 자신의 것으로 만들 수있다, 그렇지?

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

아마도 C로 구현 된 것만 큼 빠르지는 않을 것입니다. –

+1

@AndrewGrimm 아마도 C에서 구현 된 Hash의 최상위에있는 매우 가벼운 심이기 때문에 눈에 띄게 느리지는 않을 것입니다. – Phrogz