venny 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.0.2
@@ -17,6 +17,7 @@ class Set
17
17
 
18
18
  def cartesian_product(*enums)
19
19
  raise ArgumentError, 'must supply at least one Enumerable argument' if enums.empty?
20
+ raise ArgumentError, 'all arguments must be enumerable' unless enums.inject(true) { |acc, element| (acc || !element.is_a?(Enumerable)) }
20
21
  enums << self
21
22
  recursive_cartesian_product(*enums)
22
23
  end
@@ -26,12 +27,12 @@ class Set
26
27
  protected
27
28
  def recursive_cartesian_product(*enums)
28
29
  return Set.new([Set.new]) if enums.empty?
29
- raise ArgumentError, 'all arguments must be enumerable' unless enums.inject(true) { |acc, element| (acc || !element.is_a?(Enumerable)) }
30
- enums = enums.map { |element| element.to_a }.sort { |a, b| b.length <=> a.length }
31
30
  combos = Set.new
32
- enums.shift.each do |element|
33
- recursive_cartesian_product(*enums).each do |product|
34
- combos.add(product.add(element))
31
+ first = enums.shift
32
+ subproducts = recursive_cartesian_product(*enums)
33
+ first.each do |element|
34
+ subproducts.each do |product|
35
+ combos.add(product.clone.add(element))
35
36
  end
36
37
  end
37
38
  combos
data/venny.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{venny}
8
- s.version = "1.0.1"
8
+ s.version = "1.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeremy Holland"]
12
- s.date = %q{2011-04-29}
12
+ s.date = %q{2011-05-03}
13
13
  s.description = %q{Extends the standard library Set object, adding methods for cartesian products, power sets, and complements}
14
14
  s.email = %q{jeremy@jeremypholland.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 1
9
- version: 1.0.1
8
+ - 2
9
+ version: 1.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jeremy Holland
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-04-29 00:00:00 -05:00
17
+ date: 2011-05-03 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
- hash: -4231136223501847886
116
+ hash: -278822628741290833
117
117
  segments:
118
118
  - 0
119
119
  version: "0"