Class: Set

Inherits:
Object
  • Object
show all
Defined in:
lib/venny/std_lib_ext/set.rb

Instance Method Summary collapse

Instance Method Details

#*(enum) ⇒ Object



25
# File 'lib/venny/std_lib_ext/set.rb', line 25

def *(enum); cartesian_product(enum); end

#cartesian_product(*enums) ⇒ Object

Raises:

  • (ArgumentError)


18
19
20
21
22
23
# File 'lib/venny/std_lib_ext/set.rb', line 18

def cartesian_product(*enums)
  raise ArgumentError, 'must supply at least one Enumerable argument' if enums.empty?
  raise ArgumentError, 'all arguments must be enumerable' if enums.any? { |element| !element.is_a?(Enumerable) }
  enums << self
  recursive_cartesian_product(*enums)
end

#complement(enum) ⇒ Object

Raises:

  • (ArgumentError)


2
3
4
5
6
# File 'lib/venny/std_lib_ext/set.rb', line 2

def complement(enum)
  raise ArgumentError, 'value must be Enumberable' unless enum.is_a? Enumerable
  set = enum.is_a?(Set) ? enum : Set.new(enum)
  set - self
end

#power_setObject



8
9
10
11
12
13
14
15
16
# File 'lib/venny/std_lib_ext/set.rb', line 8

def power_set
  pset = Set.new
  array = self.to_a
  pset.add Set.new
  array.each_index do |i|
    pset.merge(array.combination(i+1).map { |element| Set.new(element) })
  end
  pset
end