partitions 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e002c05835f16d96037777fcce02b47483cb2c52
4
- data.tar.gz: 537e428eb0b0e2f45df44dad8d43cbb4a0b3eed3
2
+ SHA256:
3
+ metadata.gz: 19fb19c516c032bc6c91fc86529c16a93045b62b43d30eda767a9626fed3fd8e
4
+ data.tar.gz: 98f11441abd2057afc841677860d40e17679283abcdc4ee41c803ed68b9cc868
5
5
  SHA512:
6
- metadata.gz: ccd062c0f263e2d2d0d1ca5a7b032f1c5ee5ea9d1c7128a9d6cb905523ef744fd71a224dbfb473a3b1654e8d03e768e76efcf7d53166e53ae40a2ef2b7f8472c
7
- data.tar.gz: b609778564b98dfe61743d04102bc75c2ea68058f70a8ce12a00c75b23c2df56a2b1fcad4a2b7f54927b93d5f58ce99a5bb6ed15aaca9c0fb48fc7ddfd0496ae
6
+ metadata.gz: a15123e22ee7969c7b3d168c3befa77d0635fe233a658d8a06c6118582830ae623a344991dc63864fc2473807fddc7b0c7193005fd4dc5488803fcbaffdb4baf
7
+ data.tar.gz: 842718509baa3bf2b69df7ce82a6b636aa7ad9e8d3c26eeeec2319320209e71fe5d5984e19d7ffef53d28981bb26e62b20d030d915ffb0b9cafff944df9eb704
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ ruby ">= 2.7.0"
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in partitions.gemspec
data/Rakefile CHANGED
@@ -1,8 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
- require 'rake/testtask'
3
2
 
4
- Rake::TestTask.new do |t|
5
- t.libs << 'test'
3
+ desc "Run tests"
4
+ task :test do
5
+ files = FileList["test/**/*_test.rb", "test/**/*.rb"].to_a
6
+ raise "No test files found" if files.empty?
7
+ ruby "-Itest", *files
6
8
  end
7
9
 
8
10
  task default: :test
@@ -1,34 +1,29 @@
1
1
  module Partitions
2
-
3
2
  module IntegerPartitions
4
3
  def partitions
5
4
  n = self
6
- if n < 0
7
- raise ArgumentError, "n should be greater than or equal to 0"
8
- end
5
+ raise ArgumentError, "n should be greater than or equal to 0" if n < 0
6
+ return enum_for(:partitions) unless block_given?
7
+ return yield([]) if n.zero?
9
8
 
10
9
  a = Array.new(n + 1, 0)
11
10
  k = 2
12
11
  a[1] = 0
13
12
  a[2] = n
13
+
14
14
  while k != 1 do
15
15
  y = a[k] - 1
16
- k = k - 1
16
+ k -= 1
17
17
  x = a[k] + 1
18
18
 
19
19
  while x <= y do
20
20
  a[k] = x
21
- y = y - x
22
- k = k + 1
21
+ y -= x
22
+ k += 1
23
23
  end
24
24
 
25
25
  a[k] = x + y
26
-
27
- if block_given?
28
- yield a.values_at(1..k)
29
- else
30
- p a.values_at(1..k)
31
- end
26
+ yield a.values_at(1..k)
32
27
  end
33
28
  end
34
29
  end
@@ -1,8 +1,14 @@
1
1
  module Partitions
2
2
  class SetPartitions
3
- attr_reader :size
3
+ include Enumerable
4
+ attr_reader :size
5
+
6
+ def initialize(n, p = nil)
7
+ raise ArgumentError, "n must be a non-negative Integer" unless n.is_a?(Integer) && n >= 0
8
+ if !p.nil? && (!p.is_a?(Integer) || p < 1 || p > n)
9
+ raise ArgumentError, "p must be an Integer between 1 and n"
10
+ end
4
11
 
5
- def initialize(n, p=nil)
6
12
  @n = n
7
13
  @k = Array.new(n, 0)
8
14
  @m = Array.new(n, 0)
@@ -96,17 +102,16 @@ module Partitions
96
102
  end
97
103
 
98
104
  def each_partition
99
- unless block_given?
100
- raise ArgumentError, "Missing block"
101
- end
105
+ return enum_for(:each_partition) unless block_given?
106
+
102
107
  reinitialize
103
108
  yield @k.clone
104
109
  (count - 1).times do
105
- partition = next_partition
106
- yield partition
110
+ yield next_partition
107
111
  end
108
112
  reinitialize
109
113
  end
114
+ alias each each_partition
110
115
 
111
116
  def count
112
117
  if @p.nil?
@@ -114,9 +119,9 @@ module Partitions
114
119
  (1..n).each do |k|
115
120
  sum += sterling_second(@n, k)
116
121
  end
117
- return sum
122
+ sum
118
123
  else
119
- sum = sterling_second(@n, @p)
124
+ sterling_second(@n, @p)
120
125
  end
121
126
  end
122
127
 
@@ -1,3 +1,3 @@
1
1
  module Partitions
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.2"
3
3
  end
data/partitions.gemspec CHANGED
@@ -9,25 +9,25 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["NagaChaitanya Vellanki"]
10
10
  spec.email = ["nagachaitanya.vellanki.com"]
11
11
 
12
- spec.summary = %q{a rubygem to generate partitions.}
13
- spec.description = %q{Generate integer, set and multiset partitions}
12
+ spec.summary = %q{A Ruby gem to generate partitions.}
13
+ spec.description = %q{Generate integer, set and multiset partitions.}
14
14
  spec.homepage = "https://github.com/chaitanyav/partitions"
15
+ spec.required_ruby_version = ">= 2.7"
15
16
 
16
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
- # delete this section to allow pushing this gem to any host.
18
- if spec.respond_to?(:metadata)
19
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
20
- else
21
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
- end
17
+ spec.metadata = {
18
+ "allowed_push_host" => "https://rubygems.org",
19
+ "source_code_uri" => spec.homepage,
20
+ "changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md"
21
+ }
23
22
 
24
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
25
26
  spec.bindir = "exe"
26
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
28
  spec.require_paths = ["lib"]
28
29
 
29
- spec.add_development_dependency "bundler", "~> 1.9"
30
- spec.add_development_dependency "rake", "~> 10.0"
31
- spec.add_development_dependency "minitest", "~> 5.6"
32
- spec.add_development_dependency "simplecov", "~> 0.10"
30
+ spec.add_development_dependency "rake", "~> 13.0"
31
+ spec.add_development_dependency "minitest", "~> 5.26"
32
+ spec.add_development_dependency "simplecov", "~> 0.22"
33
33
  end
metadata CHANGED
@@ -1,72 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: partitions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - NagaChaitanya Vellanki
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2015-09-24 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.9'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.9'
27
12
  - !ruby/object:Gem::Dependency
28
13
  name: rake
29
14
  requirement: !ruby/object:Gem::Requirement
30
15
  requirements:
31
16
  - - "~>"
32
17
  - !ruby/object:Gem::Version
33
- version: '10.0'
18
+ version: '13.0'
34
19
  type: :development
35
20
  prerelease: false
36
21
  version_requirements: !ruby/object:Gem::Requirement
37
22
  requirements:
38
23
  - - "~>"
39
24
  - !ruby/object:Gem::Version
40
- version: '10.0'
25
+ version: '13.0'
41
26
  - !ruby/object:Gem::Dependency
42
27
  name: minitest
43
28
  requirement: !ruby/object:Gem::Requirement
44
29
  requirements:
45
30
  - - "~>"
46
31
  - !ruby/object:Gem::Version
47
- version: '5.6'
32
+ version: '5.26'
48
33
  type: :development
49
34
  prerelease: false
50
35
  version_requirements: !ruby/object:Gem::Requirement
51
36
  requirements:
52
37
  - - "~>"
53
38
  - !ruby/object:Gem::Version
54
- version: '5.6'
39
+ version: '5.26'
55
40
  - !ruby/object:Gem::Dependency
56
41
  name: simplecov
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - "~>"
60
45
  - !ruby/object:Gem::Version
61
- version: '0.10'
46
+ version: '0.22'
62
47
  type: :development
63
48
  prerelease: false
64
49
  version_requirements: !ruby/object:Gem::Requirement
65
50
  requirements:
66
51
  - - "~>"
67
52
  - !ruby/object:Gem::Version
68
- version: '0.10'
69
- description: Generate integer, set and multiset partitions
53
+ version: '0.22'
54
+ description: Generate integer, set and multiset partitions.
70
55
  email:
71
56
  - nagachaitanya.vellanki.com
72
57
  executables: []
@@ -92,7 +77,8 @@ homepage: https://github.com/chaitanyav/partitions
92
77
  licenses: []
93
78
  metadata:
94
79
  allowed_push_host: https://rubygems.org
95
- post_install_message:
80
+ source_code_uri: https://github.com/chaitanyav/partitions
81
+ changelog_uri: https://github.com/chaitanyav/partitions/blob/main/CHANGELOG.md
96
82
  rdoc_options: []
97
83
  require_paths:
98
84
  - lib
@@ -100,16 +86,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - ">="
102
88
  - !ruby/object:Gem::Version
103
- version: '0'
89
+ version: '2.7'
104
90
  required_rubygems_version: !ruby/object:Gem::Requirement
105
91
  requirements:
106
92
  - - ">="
107
93
  - !ruby/object:Gem::Version
108
94
  version: '0'
109
95
  requirements: []
110
- rubyforge_project:
111
- rubygems_version: 2.4.5
112
- signing_key:
96
+ rubygems_version: 4.0.13
113
97
  specification_version: 4
114
- summary: a rubygem to generate partitions.
98
+ summary: A Ruby gem to generate partitions.
115
99
  test_files: []