daru 0.1.0 → 0.1.1

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