2010-12-04 10 views
5

क्या बैग संग्रह का एक कार्यान्वयन है (एक सेट की तरह एक संग्रह, जो कि किसी ऑब्जेक्ट को कितनी बार डाला जाता है) की गणना करता है?रूबी में एक बैग कार्यान्वयन है?

+0

मैं जितना संभव हो उतना मानक ढूंढ रहा हूं। मैं एक मणि को एक मूल पुस्तकालय और कोड के लिए एक मणि पसंद करेंगे जो एक मणि भी नहीं है। –

उत्तर

7

ज़रूर! इसे multiset भी कहा जाता है। यहां एक 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

संभवतः सी –

+1

@AndrewGrimm में लागू किए गए जितना तेज़ नहीं है, शायद यह ध्यान से धीमा नहीं है कि यह हैश के शीर्ष पर बहुत हल्का शिम है, जिसे सी में लागू किया गया है। – Phrogz

संबंधित मुद्दे