golf
配列をユニークにしてその個数とともに返せ。
具体的には、["foo", "bar", "foo", "baz", "bar", "foo"] を、[ ["foo", 3], ["bar", 2], ["baz", 1] ] にする。
今から考える。
ハッシュ返すほうが inject 使って簡単にできそうだな。
["foo", "bar", "foo", "baz", "bar", "foo"] を {"foo" => 3, "bar" => 2, "baz" => 1} にする。
できた:
["foo", "bar", "foo", "baz", "bar", "foo"].inject({}){|r,e| r[e] = r[e].to_i + 1; r}
nil.to_i が 0 を返すことを期待しても良いものか。
追記:
ゆうきパゥワーでトラックバックがいっぱいなので、ちゃんとした答えを載せておきますね。
%w|foo bar foo baz bar foo|.inject(Hash.new 0){|r,e|r[e]+=1;r}.to_a
タグクラウドで文字の大きさ変えるとき考えてたんすよ。そんときゃ to_a 要らないけど。