daru 0.1.0 → 0.1.1

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.build.sh +6 -6
  3. data/.gitignore +2 -0
  4. data/CONTRIBUTING.md +7 -3
  5. data/History.md +36 -0
  6. data/README.md +21 -13
  7. data/Rakefile +16 -1
  8. data/benchmarks/TradeoffData.csv +65 -0
  9. data/benchmarks/dataframe_creation.rb +39 -0
  10. data/benchmarks/group_by.rb +32 -0
  11. data/benchmarks/row_access.rb +41 -0
  12. data/benchmarks/row_assign.rb +36 -0
  13. data/benchmarks/sorting.rb +44 -0
  14. data/benchmarks/vector_access.rb +31 -0
  15. data/benchmarks/vector_assign.rb +42 -0
  16. data/benchmarks/where_clause.rb +48 -0
  17. data/benchmarks/where_vs_filter.rb +28 -0
  18. data/daru.gemspec +29 -5
  19. data/lib/daru.rb +30 -1
  20. data/lib/daru/accessors/array_wrapper.rb +2 -2
  21. data/lib/daru/accessors/nmatrix_wrapper.rb +6 -6
  22. data/lib/daru/core/group_by.rb +112 -31
  23. data/lib/daru/core/merge.rb +170 -0
  24. data/lib/daru/core/query.rb +95 -0
  25. data/lib/daru/dataframe.rb +335 -223
  26. data/lib/daru/date_time/index.rb +550 -0
  27. data/lib/daru/date_time/offsets.rb +397 -0
  28. data/lib/daru/index.rb +266 -54
  29. data/lib/daru/io/io.rb +1 -2
  30. data/lib/daru/maths/arithmetic/dataframe.rb +2 -2
  31. data/lib/daru/maths/arithmetic/vector.rb +2 -2
  32. data/lib/daru/maths/statistics/dataframe.rb +58 -8
  33. data/lib/daru/maths/statistics/vector.rb +229 -0
  34. data/lib/daru/vector.rb +230 -80
  35. data/lib/daru/version.rb +1 -1
  36. data/spec/core/group_by_spec.rb +16 -16
  37. data/spec/core/merge_spec.rb +52 -0
  38. data/spec/core/query_spec.rb +171 -0
  39. data/spec/dataframe_spec.rb +278 -280
  40. data/spec/date_time/data_spec.rb +199 -0
  41. data/spec/date_time/index_spec.rb +433 -0
  42. data/spec/date_time/offsets_spec.rb +371 -0
  43. data/spec/fixtures/stock_data.csv +500 -0
  44. data/spec/index_spec.rb +317 -11
  45. data/spec/io/io_spec.rb +18 -17
  46. data/spec/math/arithmetic/dataframe_spec.rb +3 -3
  47. data/spec/math/statistics/dataframe_spec.rb +39 -1
  48. data/spec/math/statistics/vector_spec.rb +163 -1
  49. data/spec/monkeys_spec.rb +4 -0
  50. data/spec/spec_helper.rb +3 -0
  51. data/spec/vector_spec.rb +125 -60
  52. metadata +71 -14
  53. data/lib/daru/accessors/dataframe_by_vector.rb +0 -17
  54. data/lib/daru/multi_index.rb +0 -216
  55. data/spec/multi_index_spec.rb +0 -216
@@ -0,0 +1,371 @@
1
+ require 'spec_helper'
2
+ include Daru
3
+
4
+ describe DateOffset do
5
+ context "#initialize, #+, #-" do
6
+ it "creates a seconds offset" do
7
+ offset = DateOffset.new(secs: 5)
8
+ expect(offset + DateTime.new(2012,3,4,23,4,00)).to eq(
9
+ DateTime.new(2012,3,4,23,4,05))
10
+ expect(offset - DateTime.new(2012,4,2,22,4,23)).to eq(
11
+ DateTime.new(2012,4,2,22,4,18))
12
+ end
13
+
14
+ it "creates a minutes offset" do
15
+ offset = DateOffset.new(mins: 2)
16
+ expect(offset + DateTime.new(2013,4,5,12,45,44)).to eq(
17
+ DateTime.new(2013,4,5,12,47,44))
18
+ end
19
+
20
+ it "creates an hours offset" do
21
+ offset = DateOffset.new(hours: 3)
22
+ expect(offset + DateTime.new(2024,3,2)).to eq(
23
+ DateTime.new(2024,3,2,03,0,0))
24
+ end
25
+
26
+ it "creates a days offset" do
27
+ offset = DateOffset.new(days: 12)
28
+ expect(offset + DateTime.new(2012,5,4)).to eq(
29
+ DateTime.new(2012,5,16))
30
+ end
31
+
32
+ it "creates a weeks offset" do
33
+ offset = DateOffset.new(weeks: 2)
34
+ expect(offset + DateTime.new(2012,3,1)).to eq(
35
+ DateTime.new(2012,3,15))
36
+ end
37
+
38
+ it "creates a months offset" do
39
+ offset = DateOffset.new(months: 1)
40
+ expect(offset + DateTime.new(2012,3,1)).to eq(
41
+ DateTime.new(2012,4,1))
42
+ end
43
+
44
+ it "creates a years offset" do
45
+ offset = DateOffset.new(years: 2)
46
+ expect(offset + DateTime.new(2012,5,30)).to eq(
47
+ DateTime.new(2014,5,30))
48
+ end
49
+
50
+ it "supports 'n' option to apply same offset multiple times" do
51
+ offset = DateOffset.new(days: 3, n: 4)
52
+ expect(offset + DateTime.new(2012,3,1)).to eq(
53
+ DateTime.new(2012,3,13))
54
+ end
55
+ end
56
+ end
57
+
58
+ include Daru::Offsets
59
+ describe Offsets do
60
+ describe Second do
61
+ before do
62
+ @offset = Offsets::Second.new(5)
63
+ end
64
+
65
+ context "#initialize" do
66
+ it "creates a seconds offset" do
67
+ expect(@offset + DateTime.new(2012,3,4,23,4,00)).to eq(
68
+ DateTime.new(2012,3,4,23,4,05))
69
+ end
70
+ end
71
+
72
+ context "#on_offset?" do
73
+ end
74
+
75
+ context "#-" do
76
+ it "reduces by seconds" do
77
+ expect(@offset - DateTime.new(2012,2,3,12,4,23)).to eq(
78
+ DateTime.new(2012,2,3,12,4,18))
79
+ end
80
+ end
81
+ end
82
+
83
+ describe Minute do
84
+ context "#initialize" do
85
+ it "creates a minutes offset" do
86
+ offset = Offsets::Minute.new(2)
87
+ expect(offset + DateTime.new(2013,4,5,12,45,44)).to eq(
88
+ DateTime.new(2013,4,5,12,47,44))
89
+ end
90
+ end
91
+
92
+ context "#-" do
93
+ it "reduces by minutes" do
94
+ end
95
+ end
96
+ end
97
+
98
+ describe Hour do
99
+ context "#initialize" do
100
+ it "creates an hours offset" do
101
+ offset = Offsets::Hour.new(3)
102
+ expect(offset + DateTime.new(2024,3,2)).to eq(
103
+ DateTime.new(2024,3,2,03,0,0))
104
+ end
105
+ end
106
+
107
+ context "#-" do
108
+ it "reduces by hours" do
109
+ end
110
+ end
111
+ end
112
+
113
+ describe Day do
114
+ context "#initialize" do
115
+ it "creates a days offset" do
116
+ offset = Offsets::Day.new(12)
117
+ expect(offset + DateTime.new(2012,5,4)).to eq(
118
+ DateTime.new(2012,5,16))
119
+ end
120
+ end
121
+
122
+ context "#-" do
123
+ it "reduces by days" do
124
+ end
125
+ end
126
+ end
127
+
128
+ describe Week do
129
+ DAYS_ADVANCE = {
130
+ sunday: DateTime.new(2015,7,12),
131
+ monday: DateTime.new(2015,7,13),
132
+ tuesday: DateTime.new(2015,7,14),
133
+ wednesday: DateTime.new(2015,7,15),
134
+ thursday: DateTime.new(2015,7,16),
135
+ friday: DateTime.new(2015,7,17),
136
+ saturday: DateTime.new(2015,7,11)
137
+ }
138
+
139
+ DAYS_ADVANCE.each.with_index do |day_date, i|
140
+ offset = Offsets::Week.new(weekday: i)
141
+
142
+ context "#initialize" do
143
+ date = DateTime.new(2015,7,10)
144
+
145
+ it "creates anchored Week offset for #{day_date[0]}" do
146
+ expect(offset + date).to eq(day_date[1])
147
+ end
148
+ end
149
+
150
+ context "#on_offset?" do
151
+ it "checks if given DateTime is on the offset itself? (#{day_date[0]})" do
152
+ expect(offset.on_offset?(DAYS_ADVANCE[day_date[0]])).to eq(true)
153
+ end
154
+ end
155
+ end
156
+
157
+ context "#-" do
158
+ DAYS_RETREAT = {
159
+ sunday: DateTime.new(2015,7,12),
160
+ monday: DateTime.new(2015,7,13),
161
+ tuesday: DateTime.new(2015,7,14),
162
+ wednesday: DateTime.new(2015,7,8),
163
+ thursday: DateTime.new(2015,7,9),
164
+ friday: DateTime.new(2015,7,10),
165
+ saturday: DateTime.new(2015,7,11)
166
+ }
167
+ date = DateTime.new(2015,7,15)
168
+
169
+ DAYS_RETREAT.each.with_index do |day_date, i|
170
+ it "decreases the date to nearest preceding #{day_date[0]}" do
171
+ offset = Offsets::Week.new(weekday: i)
172
+ expect(offset - date).to eq(day_date[1])
173
+ end
174
+ end
175
+ end
176
+ end
177
+
178
+ describe Month do
179
+ context "#initialize" do
180
+ it "creates a month offset" do
181
+ offset = Offsets::Month.new(3)
182
+ expect(offset + DateTime.new(2012,2,29)).to eq(
183
+ DateTime.new(2012,5,29))
184
+ end
185
+ end
186
+
187
+ context "#-" do
188
+ it "reduces date by a month" do
189
+ offset = Offsets::Month.new(2)
190
+ expect(offset - DateTime.new(2012,4,2)).to eq(
191
+ DateTime.new(2012,2,2))
192
+ end
193
+ end
194
+ end
195
+
196
+ describe MonthBegin do
197
+ before do
198
+ @offset = Offsets::MonthBegin.new
199
+ @n_offset = Offsets::MonthBegin.new(3)
200
+ end
201
+
202
+ context "#+" do
203
+ it "offsets to beginning of next month" do
204
+ expect(@offset + DateTime.new(2012,3,25)).to eq(
205
+ DateTime.new(2012,4,1))
206
+
207
+ expect(@n_offset + DateTime.new(2011,3,1,5)).to eq(
208
+ DateTime.new(2011,6,1,5))
209
+ end
210
+ end
211
+
212
+ context "#on_offset?" do
213
+ it "returns true if date is on the offset" do
214
+ expect(@offset.on_offset?(DateTime.new(2012,4,1))).to eq(true)
215
+ end
216
+ end
217
+
218
+ context "#-" do
219
+ it "decreases to beginning of the current month if not on offset" do
220
+ expect(@offset - DateTime.new(2012,4,5)).to eq(
221
+ DateTime.new(2012,4,1))
222
+
223
+ expect(@n_offset - DateTime.new(2012,5,3)).to eq(
224
+ DateTime.new(2012,3,1))
225
+ end
226
+
227
+ it "decreases to beginning of the previous month if on offset" do
228
+ expect(@offset - DateTime.new(2012,5,1)).to eq(
229
+ DateTime.new(2012,4,1))
230
+
231
+ expect(@n_offset - DateTime.new(2012,6,1)).to eq(
232
+ DateTime.new(2012,3,1))
233
+ end
234
+ end
235
+ end
236
+
237
+ describe MonthEnd do
238
+ before do
239
+ @offset = Offsets::MonthEnd.new
240
+ @n_offset = Offsets::MonthEnd.new(2)
241
+ end
242
+
243
+ context "#+" do
244
+ it "increases date to end of next month if on offset" do
245
+ expect(@offset + DateTime.new(2012,2,29)).to eq(
246
+ DateTime.new(2012,3,31))
247
+
248
+ expect(@n_offset + DateTime.new(2012,2,29)).to eq(
249
+ DateTime.new(2012,4,30))
250
+ end
251
+
252
+ it "increases date to end of this month if not on offset" do
253
+ expect(@offset + DateTime.new(2012,4,4)).to eq(
254
+ DateTime.new(2012,4,30))
255
+
256
+ expect(@n_offset + DateTime.new(2012,5,2)).to eq(
257
+ DateTime.new(2012,6,30))
258
+ end
259
+ end
260
+
261
+ context "#-" do
262
+ it "decreases to end of the previous month" do
263
+ expect(@offset - DateTime.new(2012,2,29)).to eq(
264
+ DateTime.new(2012,1,31))
265
+
266
+ expect(@n_offset - DateTime.new(2015,3,3)).to eq(
267
+ DateTime.new(2015,1,31))
268
+ end
269
+ end
270
+ end
271
+
272
+ describe Year do
273
+ before do
274
+ @offset = Offsets::Year.new
275
+ end
276
+
277
+ context "#+" do
278
+ it "increaes date by a year" do
279
+ expect(@offset + DateTime.new(2012,5,2)).to eq(
280
+ DateTime.new(2013,5,2))
281
+ end
282
+ end
283
+
284
+ context "#-" do
285
+ it "decreases date by a year" do
286
+ expect(@offset - DateTime.new(2011,6,25)).to eq(
287
+ DateTime.new(2010,6,25))
288
+ end
289
+ end
290
+ end
291
+
292
+ describe YearBegin do
293
+ before do
294
+ @offset = Offsets::YearBegin.new
295
+ @n_offset = Offsets::YearBegin.new(2)
296
+ end
297
+
298
+ context "#+" do
299
+ it "offsets date to future" do
300
+ expect(@n_offset + DateTime.new(2012,3,25)).to eq(
301
+ DateTime.new(2014,1,1))
302
+ end
303
+ end
304
+
305
+ context "#on_offset?" do
306
+ it "checks if date is on the offset" do
307
+ expect(@offset.on_offset?(DateTime.new(2012,1,1))).to eq(
308
+ true)
309
+ end
310
+ end
311
+
312
+ context "#-" do
313
+ it "decreases to beginning of the year if not on offset" do
314
+ expect(@offset - DateTime.new(2012,4,2)).to eq(
315
+ DateTime.new(2012,1,1))
316
+
317
+ expect(@n_offset - DateTime.new(2012,5,5)).to eq(
318
+ DateTime.new(2011,1,1))
319
+ end
320
+
321
+ it "decreases to beginning of previous year if on offset" do
322
+ expect(@offset - DateTime.new(2012,1,1)).to eq(
323
+ DateTime.new(2011,1,1))
324
+
325
+ expect(@n_offset - DateTime.new(2013,1,1)).to eq(
326
+ DateTime.new(2011,1,1))
327
+ end
328
+ end
329
+ end
330
+
331
+ describe YearEnd do
332
+ before do
333
+ @offset = Offsets::YearEnd.new
334
+ @n_offset = Offsets::YearEnd.new(2)
335
+ end
336
+
337
+ context "#+" do
338
+ it "increases to end of same year if not on offset" do
339
+ expect(@offset + DateTime.new(2011,5,2,4,2)).to eq(
340
+ DateTime.new(2011,12,31,4,2))
341
+
342
+ expect(@n_offset + DateTime.new(2011,5,2,4,2)).to eq(
343
+ DateTime.new(2012,12,31,4,2))
344
+ end
345
+
346
+ it "increases to end of next year if on offset" do
347
+ expect(@offset + DateTime.new(2012,12,31,4)).to eq(
348
+ DateTime.new(2013,12,31,4))
349
+
350
+ expect(@n_offset + DateTime.new(2012,12,31,4)).to eq(
351
+ DateTime.new(2014,12,31,4))
352
+ end
353
+ end
354
+
355
+ context "#-" do
356
+ it "decreases to end of previous year" do
357
+ expect(@offset - DateTime.new(2012,2,3)).to eq(
358
+ DateTime.new(2011,12,31))
359
+
360
+ expect(@n_offset - DateTime.new(2011,5,6)).to eq(
361
+ DateTime.new(2010,12,31))
362
+ end
363
+ end
364
+
365
+ context "#on_offset?" do
366
+ it "reports whether on offset or not" do
367
+ expect(@offset.on_offset?(DateTime.new(2012,12,31))).to eq(true)
368
+ end
369
+ end
370
+ end
371
+ end
@@ -0,0 +1,500 @@
1
+ 17.66
2
+ 17.65
3
+ 17.68
4
+ 17.66
5
+ 17.68
6
+ 17.67
7
+ 17.68
8
+ 17.68
9
+ 17.67
10
+ 17.67
11
+ 17.68
12
+ 17.71
13
+ 17.74
14
+ 17.72
15
+ 17.73
16
+ 17.76
17
+ 17.74
18
+ 17.69
19
+ 17.69
20
+ 17.67
21
+ 17.66
22
+ 17.67
23
+ 17.69
24
+ 17.69
25
+ 17.68
26
+ 17.65
27
+ 17.65
28
+ 17.64
29
+ 17.63
30
+ 17.64
31
+ 17.67
32
+ 17.68
33
+ 17.7
34
+ 17.68
35
+ 17.69
36
+ 17.69
37
+ 17.72
38
+ 17.71
39
+ 17.71
40
+ 17.71
41
+ 17.69
42
+ 17.69
43
+ 17.71
44
+ 17.72
45
+ 17.71
46
+ 17.68
47
+ 17.68
48
+ 17.68
49
+ 17.69
50
+ 17.68
51
+ 17.68
52
+ 17.69
53
+ 17.67
54
+ 17.69
55
+ 17.71
56
+ 17.7
57
+ 17.7
58
+ 17.71
59
+ 17.73
60
+ 17.74
61
+ 17.74
62
+ 17.74
63
+ 17.76
64
+ 17.77
65
+ 17.55
66
+ 17.55
67
+ 17.5
68
+ 17.46
69
+ 17.49
70
+ 17.54
71
+ 17.51
72
+ 17.54
73
+ 17.57
74
+ 17.54
75
+ 17.52
76
+ 17.53
77
+ 17.56
78
+ 17.55
79
+ 17.55
80
+ 17.54
81
+ 17.55
82
+ 17.55
83
+ 17.55
84
+ 17.54
85
+ 17.52
86
+ 17.53
87
+ 17.51
88
+ 17.52
89
+ 17.5
90
+ 17.5
91
+ 17.5
92
+ 17.49
93
+ 17.46
94
+ 17.47
95
+ 17.48
96
+ 17.45
97
+ 17.41
98
+ 17.39
99
+ 17.38
100
+ 17.43
101
+ 17.44
102
+ 17.43
103
+ 17.43
104
+ 17.46
105
+ 17.46
106
+ 17.47
107
+ 17.47
108
+ 17.45
109
+ 17.48
110
+ 17.49
111
+ 17.5
112
+ 17.49
113
+ 17.48
114
+ 17.49
115
+ 17.47
116
+ 17.47
117
+ 17.44
118
+ 17.44
119
+ 17.43
120
+ 17.45
121
+ 17.42
122
+ 17.43
123
+ 17.43
124
+ 17.44
125
+ 17.44
126
+ 17.43
127
+ 17.41
128
+ 17.41
129
+ 17.38
130
+ 17.38
131
+ 17.37
132
+ 17.37
133
+ 17.37
134
+ 17.3
135
+ 17.28
136
+ 17.27
137
+ 17.19
138
+ 16.41
139
+ 16.44
140
+ 16.48
141
+ 16.53
142
+ 16.51
143
+ 16.57
144
+ 16.54
145
+ 16.59
146
+ 16.64
147
+ 16.6
148
+ 16.65
149
+ 16.69
150
+ 16.69
151
+ 16.68
152
+ 16.64
153
+ 16.65
154
+ 16.66
155
+ 16.64
156
+ 16.61
157
+ 16.65
158
+ 16.67
159
+ 16.66
160
+ 16.65
161
+ 16.61
162
+ 16.59
163
+ 16.57
164
+ 16.55
165
+ 16.55
166
+ 16.57
167
+ 16.54
168
+ 16.6
169
+ 16.62
170
+ 16.6
171
+ 16.59
172
+ 16.61
173
+ 16.66
174
+ 16.69
175
+ 16.67
176
+ 16.65
177
+ 16.66
178
+ 16.65
179
+ 16.65
180
+ 16.68
181
+ 16.68
182
+ 16.67
183
+ 16.64
184
+ 16.73
185
+ 16.76
186
+ 16.75
187
+ 16.79
188
+ 16.8
189
+ 16.77
190
+ 16.74
191
+ 16.76
192
+ 16.83
193
+ 16.84
194
+ 16.82
195
+ 16.89
196
+ 16.93
197
+ 16.94
198
+ 16.9
199
+ 16.92
200
+ 16.88
201
+ 16.85
202
+ 16.87
203
+ 16.8
204
+ 16.79
205
+ 16.85
206
+ 16.85
207
+ 16.8
208
+ 16.82
209
+ 16.85
210
+ 16.9
211
+ 16.86
212
+ 16.79
213
+ 16.75
214
+ 16.78
215
+ 17.06
216
+ 17.05
217
+ 17.04
218
+ 17.02
219
+ 17.01
220
+ 17.02
221
+ 17.05
222
+ 17.07
223
+ 17.08
224
+ 17.09
225
+ 17.1
226
+ 17.11
227
+ 17.09
228
+ 17.1
229
+ 17.1
230
+ 17.12
231
+ 17.17
232
+ 17.16
233
+ 17.17
234
+ 17.18
235
+ 17.18
236
+ 17.18
237
+ 17.17
238
+ 17.15
239
+ 17.14
240
+ 17.13
241
+ 17.14
242
+ 17.13
243
+ 17.12
244
+ 17.12
245
+ 17.09
246
+ 17.09
247
+ 17.11
248
+ 17.06
249
+ 17.07
250
+ 17.06
251
+ 17.07
252
+ 17.06
253
+ 17.09
254
+ 17.05
255
+ 17.04
256
+ 17.04
257
+ 16.99
258
+ 17
259
+ 17.03
260
+ 17
261
+ 16.97
262
+ 16.96
263
+ 16.98
264
+ 16.98
265
+ 16.98
266
+ 17.03
267
+ 17
268
+ 17
269
+ 17
270
+ 17.02
271
+ 17
272
+ 17.02
273
+ 17.01
274
+ 17.02
275
+ 17.03
276
+ 17.03
277
+ 17.01
278
+ 17.03
279
+ 17.03
280
+ 17.03
281
+ 17.01
282
+ 17.03
283
+ 17.05
284
+ 17.05
285
+ 17.08
286
+ 17.04
287
+ 17.01
288
+ 17.03
289
+ 17.02
290
+ 17.03
291
+ 17.04
292
+ 17.05
293
+ 17.37
294
+ 17.35
295
+ 17.34
296
+ 17.32
297
+ 17.29
298
+ 17.29
299
+ 17.22
300
+ 17.26
301
+ 17.3
302
+ 17.34
303
+ 17.33
304
+ 17.39
305
+ 17.4
306
+ 17.39
307
+ 17.48
308
+ 17.5
309
+ 17.47
310
+ 17.43
311
+ 17.4
312
+ 17.42
313
+ 17.46
314
+ 17.48
315
+ 17.48
316
+ 17.46
317
+ 17.46
318
+ 17.45
319
+ 17.43
320
+ 17.44
321
+ 17.48
322
+ 17.43
323
+ 17.45
324
+ 17.47
325
+ 17.46
326
+ 17.46
327
+ 17.48
328
+ 17.48
329
+ 17.48
330
+ 17.46
331
+ 17.5
332
+ 17.55
333
+ 17.58
334
+ 17.57
335
+ 17.56
336
+ 17.59
337
+ 17.61
338
+ 17.62
339
+ 17.63
340
+ 17.62
341
+ 17.61
342
+ 17.61
343
+ 17.62
344
+ 17.64
345
+ 17.65
346
+ 17.61
347
+ 17.62
348
+ 17.66
349
+ 17.65
350
+ 17.64
351
+ 17.63
352
+ 17.64
353
+ 17.64
354
+ 17.64
355
+ 17.63
356
+ 17.61
357
+ 17.61
358
+ 17.62
359
+ 17.63
360
+ 17.64
361
+ 17.65
362
+ 17.66
363
+ 17.68
364
+ 17.69
365
+ 17.69
366
+ 17.69
367
+ 17.66
368
+ 17.69
369
+ 17.69
370
+ 17.62
371
+ 17.68
372
+ 17.64
373
+ 17.65
374
+ 17.61
375
+ 17.52
376
+ 17.56
377
+ 17.55
378
+ 17.55
379
+ 17.48
380
+ 17.45
381
+ 17.46
382
+ 17.46
383
+ 17.44
384
+ 17.47
385
+ 17.5
386
+ 17.49
387
+ 17.5
388
+ 17.53
389
+ 17.53
390
+ 17.54
391
+ 17.51
392
+ 17.51
393
+ 17.53
394
+ 17.53
395
+ 17.53
396
+ 17.55
397
+ 17.55
398
+ 17.54
399
+ 17.56
400
+ 17.59
401
+ 17.57
402
+ 17.58
403
+ 17.58
404
+ 17.57
405
+ 17.59
406
+ 17.57
407
+ 17.55
408
+ 17.51
409
+ 17.51
410
+ 17.52
411
+ 17.52
412
+ 17.53
413
+ 17.55
414
+ 17.59
415
+ 17.61
416
+ 17.61
417
+ 17.6
418
+ 17.6
419
+ 17.62
420
+ 17.65
421
+ 17.62
422
+ 17.6
423
+ 17.6
424
+ 17.62
425
+ 17.61
426
+ 17.62
427
+ 17.63
428
+ 17.64
429
+ 17.65
430
+ 17.61
431
+ 17.62
432
+ 17.64
433
+ 17.63
434
+ 17.62
435
+ 17.6
436
+ 17.57
437
+ 17.57
438
+ 17.6
439
+ 17.59
440
+ 17.6
441
+ 17.61
442
+ 17.61
443
+ 17.63
444
+ 17.63
445
+ 17.59
446
+ 17.58
447
+ 17.76
448
+ 17.79
449
+ 17.76
450
+ 17.73
451
+ 17.74
452
+ 17.73
453
+ 17.67
454
+ 17.66
455
+ 17.66
456
+ 17.64
457
+ 17.63
458
+ 17.62
459
+ 17.61
460
+ 17.6
461
+ 17.61
462
+ 17.61
463
+ 17.6
464
+ 17.6
465
+ 17.64
466
+ 17.65
467
+ 17.65
468
+ 17.63
469
+ 17.61
470
+ 17.6
471
+ 17.63
472
+ 17.63
473
+ 17.62
474
+ 17.63
475
+ 17.64
476
+ 17.62
477
+ 17.63
478
+ 17.65
479
+ 17.64
480
+ 17.6
481
+ 17.59
482
+ 17.59
483
+ 17.58
484
+ 17.58
485
+ 17.6
486
+ 17.6
487
+ 17.6
488
+ 17.6
489
+ 17.6
490
+ 17.58
491
+ 17.59
492
+ 17.6
493
+ 17.6
494
+ 17.6
495
+ 17.59
496
+ 17.59
497
+ 17.58
498
+ 17.58
499
+ 17.65
500
+ 17.65