昨日の続きです。
配列を操作して、平均や最大最小を得る。
プログラミング的なことの詳細です。
下記サイトにも書いてあるとおりで簡素な記述が可能。
Rubyで総和・平均・分散・標準偏差を算出する
http://web-salad.hateblo.jp/entry/2015/02/05/110557
リファレンスを見れば、最大最小はメソッドして提供されてるのでこれを使えばよい。
何故、
min,maxは提供され、sum,averageが提供されないのか?
injectとreduce同じ機能を2つ用意する必要があるのか?
私にはRubyは謎ですが、それは気にせず、
これで、配列の操作は簡単に出来るようになった。
あとは指定した区間で、移動平均や最大、最小の配列を返すような機能を提供すれば、
指標の実装に一歩近づく。
最初にmap_indicator(span)というメソッドを準備。
spanという変数で区間を指定し、
配列のデータを区間ごとに何か計算をして、
その計算結果を順番に詰めた配列にて返す。
「何か計算」のところはいろいろ外から変更できる。
以前出てきたコールバック的な仕組みだ。
配列の部分を順番に取り出すのはeach_conというメソッドがあり、
更に、順番に処理するときに、その連番も使いたいときはwith_indexを併用する。
要素に値が無いときスキップするという条件があり、
値が全て有れば、「何か計算」を実行して、値を返す配列に格納。
で、今のところ「何か計算」は、
移動平均と最大、最小を実装した。
コード量は少ないが理解することはなかなか多い、
Rubyの良いところも発揮された部分だけど、
Rubyは決して易しくはない。
ま、兎にも角にも、配列の操作を理解した。
今日はここまで。
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。