Kaip aš galiu gauti susikirtimą, sąjungą ir masyvų pogrupį Ruby?

Noriu sukurti įvairius metodus „ Multiset“ klasei.

Turiu visus būtinus metodus, bet nesu įsitikinęs, kaip rašyti sankirtos, sąjungos ir pogrupio metodus.

Jei norite susikurti ir sujungti, mano kodas prasideda taip:

 def intersect(var) x = Multiset.new end 

Štai pavyzdys:

 X = [1, 1, 2, 4] Y = [1, 2, 2, 2] 

tada X ir Y sankirtos yra [1, 2] .

116
15 апр. nustatė user487743 balandžio 15 d 2011-04-15 17:18 '11, 17:18, 2011-04-15 17:18
@ 2 atsakymai

Naudojant faktą, kad galite atlikti operacijas su matricomis atlikdami > (susikirtimą), - (skirtumas) ir | (sąjunga).

Akivaizdu, kad neįgyvendinau „MultiSet“ specifikacijos, tačiau tai turėtų prasidėti:

 class MultiSet attr_accessor :set def initialize(set) @set = set end # intersection def  @set  other.set end # difference def -(other) @set - other.set end # union def |(other) @set | other.set end end x = MultiSet.new([1,1,2,2,3,4,5,6]) y = MultiSet.new([1,3,5,6]) px - y # [2,2,4] px  y # [1,3,5,6] px | y # [1,2,3,4,5,6] 
104
15 апр. Mike Lewis atsakymas, pateiktas balandžio 15 d 2011-04-15 17:28 '11, 17:28, 2011-04-15 17:28

Manau, kad X ir Y yra masyvai? Jei taip, tai yra labai paprastas būdas tai padaryti:

 x = [1, 1, 2, 4] y = [1, 2, 2, 2] # intersection x  y # => [1, 2] # union x | y # => [1, 2, 4] # difference x - y # => [4] 

Šaltinis

221
15 апр. Jon Gauthier atsakymas, pateiktas balandžio 15 d 2011-04-15 17:21 '11, 17:21, 2011-04-15 17:21

Kiti klausimai apie žymes arba Užduoti klausimą