元エントリの続きの続き。さらにいくつかご解答いただきました。ありがとうございます。元エントリは「『ランキングの集計』って言ったら重複事例を処理するのが普通だよなー」と思って書いたんですが、多くの人をはめてしまったようでごめんなさい。
ポイントは Hash#select で同じ順位の要素を集めてまとめて処理していること、でしょうか。
『ランキングの集計』を考える - sumim’s smalltalking-tos
うおおおなるほどー。これを求めていた気がします。富豪の発想ですね。
.inject(Hash.new(0)) {|h,w| h[w] += 1; h }
お題2:単語数カウント
いいイディオムですね。いただきます。
わかりやすく作るんなら適当にメソッドに分割した方が建設的な気もするし、この機能をメソッドにしてしまえばあまり気にしなくていいという話もある。
ランキング - odz buffer
(コメントにも書きましたが) 非常に正論なんですが、10 行 〜 300 行程度のコードを書きためる (書き捨てるわけじゃない) タイプなので、毎回定義するのが面倒だったんですよね。Hash#ranking が Ruby 側で用意されれば僕としては最高ですが (どんなだ) 、さすがに特殊用途に特化しすぎな感じ。
ここまで書いてから、同数の取り扱いが問題になっていることに気づく。ふえーん。だって例題に同数がないし…。
ランキングの集計 - rubyco(るびこ)の日記
サンプルがよくなくて本当にすんません。