array_pair 0.0.1 → 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/VERSION +1 -1
- data/lib/array_pair.rb +26 -12
- data/test/test_array_pair.rb +26 -8
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/array_pair.rb
CHANGED
@@ -25,13 +25,13 @@ class Array
|
|
25
25
|
pairs = []
|
26
26
|
|
27
27
|
if another_array #between this array and the next
|
28
|
-
|
29
|
-
|
28
|
+
(0..length-1).each do |index1|
|
29
|
+
(0..another_array.length-1).each do |index2|
|
30
30
|
pairs.push [self[index1], another_array[index2]]
|
31
31
|
end
|
32
32
|
end
|
33
33
|
else # within this array only
|
34
|
-
|
34
|
+
(0..length-1).each do |index1|
|
35
35
|
index2 = index1+1
|
36
36
|
while index2 < length
|
37
37
|
pairs.push [self[index1], self[index2]]
|
@@ -39,7 +39,7 @@ class Array
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
return pairs
|
44
44
|
end
|
45
45
|
|
@@ -134,7 +134,7 @@ class Array
|
|
134
134
|
if columns_to_normalise.nil? or columns_to_normalise.include?(index)
|
135
135
|
minima = column_minima[index]
|
136
136
|
maxima = column_maxima[index]
|
137
|
-
|
137
|
+
|
138
138
|
if col.nil?
|
139
139
|
new_row.push nil
|
140
140
|
elsif minima == maxima
|
@@ -170,15 +170,15 @@ class Array
|
|
170
170
|
return '()' if empty?
|
171
171
|
return "('#{join("','")}')"
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
# For SQL conditions. In [] brackets, single quotes don't work.
|
175
175
|
# ['a','bc'] => "(a,bc)"
|
176
176
|
def to_sql_in_string_no_quotes
|
177
177
|
return '()' if empty?
|
178
178
|
return "(#{join(",")})"
|
179
179
|
end
|
180
|
-
|
181
|
-
|
180
|
+
|
181
|
+
|
182
182
|
def median
|
183
183
|
return nil unless length>0
|
184
184
|
a = sort
|
@@ -188,12 +188,12 @@ class Array
|
|
188
188
|
return a[length/2]
|
189
189
|
end
|
190
190
|
end
|
191
|
-
|
191
|
+
|
192
192
|
def standard_deviation
|
193
193
|
return nil if empty?
|
194
194
|
RSRuby.instance.sd(self)
|
195
195
|
end
|
196
|
-
|
196
|
+
|
197
197
|
# Similar to pairs(another_array) iterator, in that you iterate over 2
|
198
198
|
# pairs of elements. However, here only the one array (the 'this' Enumerable)
|
199
199
|
# and the names of these are from the names
|
@@ -206,7 +206,21 @@ class Array
|
|
206
206
|
end
|
207
207
|
end
|
208
208
|
end
|
209
|
-
|
209
|
+
|
210
|
+
# Like each_lower_triangular_matrix, except iterate over 3 items at once, not 2.
|
211
|
+
# So for [1,2,3,4] you should get (in succession), 123, 124, 134, 234
|
212
|
+
def each_lower_triangular_3d_matrix
|
213
|
+
each_with_index do |e1, i1|
|
214
|
+
each_with_index do |e2, i2|
|
215
|
+
next unless i2 > i1
|
216
|
+
each_with_index do |e3, i3|
|
217
|
+
next unless i3 > i2
|
218
|
+
yield e1, e2, e3
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
210
224
|
# like uniq -c for unix
|
211
225
|
def uniq_count
|
212
226
|
hash = {}
|
@@ -216,7 +230,7 @@ class Array
|
|
216
230
|
end
|
217
231
|
hash
|
218
232
|
end
|
219
|
-
|
233
|
+
|
220
234
|
def no_nils
|
221
235
|
reject do |element|
|
222
236
|
element.nil?
|
data/test/test_array_pair.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# To change this template, choose Tools | Templates
|
3
3
|
# and open the template in the editor.
|
4
|
-
|
4
|
+
|
5
5
|
|
6
6
|
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
7
7
|
|
@@ -63,28 +63,28 @@ class ArrayPairTest < Test::Unit::TestCase
|
|
63
63
|
assert_equal '()', [].to_sql_in_string
|
64
64
|
assert_equal "('a','bc')", ['a','bc'].to_sql_in_string
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
def test_median
|
68
68
|
assert_equal nil, [].median
|
69
69
|
assert_equal 1, [1].median
|
70
70
|
assert_equal 1.5, [0,3,2,1].median
|
71
71
|
assert_equal 2, [1,2,3].median
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
def test_each_lower_triangle_iterator
|
75
75
|
gained = []
|
76
76
|
[].each_lower_triangular_matrix() { |i,j| gained.push([i,j]) }
|
77
77
|
assert_equal [], gained
|
78
|
-
|
78
|
+
|
79
79
|
gained = []
|
80
80
|
[1].each_lower_triangular_matrix() { |i,j| gained.push([i,j]) }
|
81
81
|
assert_equal [], gained
|
82
|
-
|
82
|
+
|
83
83
|
gained = []
|
84
84
|
[1,2].each_lower_triangular_matrix() { |i,j| gained.push([i,j]) }
|
85
85
|
assert_equal [1,2], gained[0]
|
86
86
|
assert_equal 1, gained.length
|
87
|
-
|
87
|
+
|
88
88
|
gained = []
|
89
89
|
[1,2,3].each_lower_triangular_matrix() { |i,j| gained.push([i,j]) }
|
90
90
|
assert_equal [1,2], gained[0]
|
@@ -92,13 +92,31 @@ class ArrayPairTest < Test::Unit::TestCase
|
|
92
92
|
assert_equal [2,3], gained[2]
|
93
93
|
assert_equal 3, gained.length
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
|
+
def test_each_lower_triangular_3d_matrix
|
97
|
+
gained = []
|
98
|
+
[].each_lower_triangular_3d_matrix { |i,j,k| gained.push([i,j,k]) }
|
99
|
+
assert_equal [], gained
|
100
|
+
|
101
|
+
gained = []
|
102
|
+
[1,2,3].each_lower_triangular_3d_matrix { |i,j,k| gained.push([i,j,k]) }
|
103
|
+
assert_equal [[1,2,3]], gained
|
104
|
+
|
105
|
+
gained = []
|
106
|
+
[1,2,3,4].each_lower_triangular_3d_matrix { |i,j,k| gained.push([i,j,k]) }
|
107
|
+
assert_equal [1,2,3], gained[0]
|
108
|
+
assert_equal [1,2,4], gained[1]
|
109
|
+
assert_equal [1,3,4], gained[2]
|
110
|
+
assert_equal [2,3,4], gained[3]
|
111
|
+
assert_equal 4, gained.length
|
112
|
+
end
|
113
|
+
|
96
114
|
def test_standard_deviation
|
97
115
|
assert_nil [].standard_deviation
|
98
116
|
assert_equal 1.0, [1,2,3].standard_deviation
|
99
117
|
assert_equal 129, ([1,2,3,4].standard_deviation*100).round
|
100
118
|
end
|
101
|
-
|
119
|
+
|
102
120
|
def test_uniq_count
|
103
121
|
assert_equal({}, [].uniq_count)
|
104
122
|
assert_equal({'a' => 1}, ['a'].uniq_count)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: array_pair
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben J Woodcroft
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-16 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|