kadane_san 0.0.2 → 0.1.0

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.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/tsmsogn/kadane_san.svg?branch=master)](https://travis-ci.org/tsmsogn/kadane_san)
4
4
 
5
- Solving maximum subarray problem with Kadane's algorithm
5
+ Solving maximum/minimum subarray problem with Kadane's algorithm
6
6
 
7
7
  ## Installation
8
8
 
@@ -24,9 +24,9 @@ Or install it yourself as:
24
24
 
25
25
  KadaneSan::max_subarray [-5, -1, 6, 4, 9, -6, -7]
26
26
  => 19
27
-
28
- KadaneSan.max_subarray [-4, -2, -3, -1]
29
- => -1
27
+
28
+ KadaneSan::min_subarray [5, 1, -6, -4, -9, 6, 7]
29
+ => -19
30
30
 
31
31
  ## Contributing
32
32
 
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = KadaneSan::VERSION
9
9
  spec.authors = ["tsmsogn"]
10
10
  spec.email = ["tsmsogn@gmail.com"]
11
- spec.summary = %q{Solving maximum subarray problem with Kadane's algorithm}
11
+ spec.summary = %q{Solving maximum/minimum subarray problem with Kadane's algorithm}
12
12
  spec.description = ""
13
13
  spec.homepage = "https://github.com/tsmsogn/kadane_san"
14
14
  spec.license = "MIT"
@@ -9,4 +9,13 @@ module KadaneSan
9
9
  end
10
10
  max_so_far
11
11
  end
12
+
13
+ def self.min_subarray(a)
14
+ min_so_far = min_ending_here = 1.0 / 0
15
+ a.each do |i|
16
+ min_ending_here = [i, min_ending_here + i].min
17
+ min_so_far = [min_so_far, min_ending_here].min
18
+ end
19
+ min_so_far
20
+ end
12
21
  end
@@ -1,3 +1,3 @@
1
1
  module KadaneSan
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -7,4 +7,11 @@ describe KadaneSan do
7
7
  expect(KadaneSan::max_subarray([1000, -200, 201])).to eq(1001)
8
8
  expect(KadaneSan::max_subarray([-4, -3 -2, -1])).to eq(-1)
9
9
  end
10
+
11
+ it '::min_subarray return right value' do
12
+ expect(KadaneSan::min_subarray([5, 1, -6, -4, -9, 6, 7])).to eq(-19)
13
+ expect(KadaneSan::min_subarray([-1, -2, -3, -2, 2, 1, -1, -2, -3, -2, -1, 2, -1])).to eq(-14)
14
+ expect(KadaneSan::min_subarray([-1000, 200, -201])).to eq(-1001)
15
+ expect(KadaneSan::min_subarray([4, 3, 2, 1])).to eq(1)
16
+ end
10
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kadane_san
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-25 00:00:00.000000000 Z
12
+ date: 2015-03-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -91,18 +91,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ segments:
95
+ - 0
96
+ hash: 3845242829199364226
94
97
  required_rubygems_version: !ruby/object:Gem::Requirement
95
98
  none: false
96
99
  requirements:
97
100
  - - ! '>='
98
101
  - !ruby/object:Gem::Version
99
102
  version: '0'
103
+ segments:
104
+ - 0
105
+ hash: 3845242829199364226
100
106
  requirements: []
101
107
  rubyforge_project:
102
108
  rubygems_version: 1.8.23
103
109
  signing_key:
104
110
  specification_version: 3
105
- summary: Solving maximum subarray problem with Kadane's algorithm
111
+ summary: Solving maximum/minimum subarray problem with Kadane's algorithm
106
112
  test_files:
107
113
  - spec/kadane_san_spec.rb
108
114
  - spec/spec_helper.rb