View Problem

Categorise a list

Given the list [one, two, three, four, five] produce a map {3:[one, two], 4:[four, five], 5:[three]} which sorts elements into map entries based on their length
DiskEdit
clojure
(loop [m {}
l ["one" "two" "three" "four" "five"]]
(if (zero? (count l))
m
(let [item (first l)
key (count item)]
(recur
(assoc m key (cons item (get m key [])))
(rest l)))))
DiskEdit
clojure
(group-by count ["one" "two" "three" "four" "five"])

Submit a new solution for clojure
There are 23 other solutions in additional languages (cpp, csharp, erlang, fantom ...)