Some solutions from 4clojure.com