clojure algorithm