Various algorithms implemented in Clojure