Add set operation to Array : Set « Collections « Ruby






Add set operation to Array


require 'set'


class Array
  def classify
    
    h = {}
    each do |i|
      x = yield(i)
      (h[x] ||= self.class.new) << i
    end
    h
  end

  def divide(&block)
    Set.new(classify(&block).values)
  end
end

p [1,1,2,6,6,7,101].divide { |x| x % 2 }
# => #<Set: {[2, 6, 6], [1, 1, 7, 101]}>

 








Related examples in the same category

1.Create set with Set.new
2.Create set with constant values
3.Is it in a set
4.Is it a subset
5.Set length, size and empty?
6.The intersection is the set of values that appear in both
7.The union is the set of values that appear in either
8.a-b: is the elements of a except for those also in b
9.a^b is the set of values that appear in one set but not both: (a|b)-(a&b)
10.Add element to a set
11.merge a range to a set
12.Remove elements from a set
13.Set subtraction
14.Delete elements from a set with block
15.Reject elements from a set
16.Do an in-place intersection like this:
17.Replace a set
18.Clear a set
19.Is it empty
20.Each loop
21.Map elements in a set
22.Collect in place
23.Convert set to array
24.Inspect a set
25.Compare two sets
26.Classify set elements as even or odd
27.Divide set
28.Divide with block
29.Flatten the subsets
30.Add new method to set
31.Partitioning or Classifying a Set
32.Divide a set by value
33.Divide a set by even and odd value
34.Divide a set by its element's class
35.Divide a set by absolute value
36.Divide set into three sub sets
37.Classify a set into three
38.Convert a hash to set and divide
39.Sort with block
40.Set includes and membership