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 要らないけど。