配列を整理するコード
配列をユニークにしてその個数とともに返せ - rubyco(るびこ)の日記 より。
配列をユニークにしてその個数とともに返せ。
具体的には、["foo", "bar", "foo", "baz", "bar", "foo"] を、[ ["foo", 3], ["bar", 2], ["baz", 1] ] にする。
golf - babie, you're my home
何も見ずにちょっと試行錯誤して書いた普通のコードがこちら。
s = ["foo", "bar", "foo", "baz", "bar", "foo"] d = [] s.each{|sv| found = false d.each{|dv| if sv == dv[0] then dv[1]+=1 found = true break end } if found == false then d << [ sv, 1 ] end } p d
で、元ページとか見てみた。そうか、ハッシュ使うのか。
ってか、短くするのちょっと疲れたので、これで保留。