kadane_san 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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