average 1.0 → 2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/average.rb +2 -1
- data/lib/average/array_overrides.rb +15 -0
- data/lib/average/mean.rb +1 -1
- data/lib/average/median.rb +5 -5
- data/lib/average/mode.rb +1 -1
- data/lib/average/version.rb +1 -1
- data/spec/array_overrides_spec.rb +31 -0
- data/spec/average_helper_spec.rb +1 -1
- data/spec/median_spec.rb +3 -3
- metadata +5 -2
data/lib/average.rb
CHANGED
data/lib/average/mean.rb
CHANGED
data/lib/average/median.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
def median(array)
|
2
|
-
return if
|
2
|
+
return if not valid_array?(array)
|
3
3
|
array = clean_array(array)
|
4
|
-
|
4
|
+
calculate_median(array)
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
7
|
+
def calculate_median(array)
|
8
8
|
array.sort!
|
9
9
|
if array.length.even?
|
10
|
-
mean(middle_items_to_average(array))
|
10
|
+
mean( middle_items_to_average(array) )
|
11
11
|
else
|
12
12
|
array[ array.length / 2.to_f ]
|
13
13
|
end
|
@@ -18,5 +18,5 @@ def middle_item(array)
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def middle_items_to_average(array)
|
21
|
-
array[middle_item(array) -1 .. middle_item(array)]
|
21
|
+
array[ middle_item(array) -1 .. middle_item(array) ]
|
22
22
|
end
|
data/lib/average/mode.rb
CHANGED
data/lib/average/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Average do
|
4
|
+
|
5
|
+
let(:int_array) { [3,4,5] }
|
6
|
+
|
7
|
+
describe '.get_mean' do
|
8
|
+
context 'should give back the same result as' do
|
9
|
+
it 'mean([X,X,X,X])' do
|
10
|
+
expect(int_array.get_mean).to eq(mean(int_array))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '.get_mode' do
|
16
|
+
context 'should give back the same result as ' do
|
17
|
+
it 'mode([X,X,X,X])' do
|
18
|
+
expect(int_array.get_mode).to eq(mode(int_array))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.get_median' do
|
24
|
+
context 'should give back the same result as ' do
|
25
|
+
it 'median([X,X,X,X])' do
|
26
|
+
expect(int_array.get_median).to eq(median(int_array))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/spec/average_helper_spec.rb
CHANGED
data/spec/median_spec.rb
CHANGED
@@ -34,16 +34,16 @@ describe Average do
|
|
34
34
|
|
35
35
|
end
|
36
36
|
|
37
|
-
describe '#
|
37
|
+
describe '#calculate_median' do
|
38
38
|
context 'with an even array' do
|
39
39
|
it 'should give back the middle value' do
|
40
|
-
expect(
|
40
|
+
expect(calculate_median(array)).to eq(2.0)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
context 'with a _not_ even array' do
|
45
45
|
it 'should give back the the element on the middle' do
|
46
|
-
expect(
|
46
|
+
expect(calculate_median(mode_array_not_pair)).to eq(2)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: average
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '
|
4
|
+
version: '2.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-
|
12
|
+
date: 2015-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -73,11 +73,13 @@ files:
|
|
73
73
|
- Rakefile
|
74
74
|
- average.gemspec
|
75
75
|
- lib/average.rb
|
76
|
+
- lib/average/array_overrides.rb
|
76
77
|
- lib/average/average_helper.rb
|
77
78
|
- lib/average/mean.rb
|
78
79
|
- lib/average/median.rb
|
79
80
|
- lib/average/mode.rb
|
80
81
|
- lib/average/version.rb
|
82
|
+
- spec/array_overrides_spec.rb
|
81
83
|
- spec/average_helper_spec.rb
|
82
84
|
- spec/average_spec.rb
|
83
85
|
- spec/mean_spec.rb
|
@@ -110,6 +112,7 @@ signing_key:
|
|
110
112
|
specification_version: 3
|
111
113
|
summary: Find the arithmethic mean/mode/median of an array of numbers .
|
112
114
|
test_files:
|
115
|
+
- spec/array_overrides_spec.rb
|
113
116
|
- spec/average_helper_spec.rb
|
114
117
|
- spec/average_spec.rb
|
115
118
|
- spec/mean_spec.rb
|