Guest User

clojure collatz for HN

a guest
Nov 30th, 2013
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. (defn collatz-next
  3.   "Computes the next number of the Collatz conjecture series."
  4.   [a]
  5.   (/ (if (even? a)
  6.        a
  7.        (inc (* 3 a )))
  8.      2))
  9.  
  10. (defn collatz-length
  11.   "Computes how long is Collatz conjecture series for particular n."
  12.   [n]
  13.   (loop [number n length 0]
  14.       (if (= number 1)
  15.       length
  16.       (recur (collatz-next number) (inc length)))))
  17.  
  18. (defn longest-collatz
  19.   [n]
  20.   (loop [i 1 best '(1 0)]
  21.     (let [length (collatz-length i)]
  22.       (if (< i n)
  23.         (if (> length (second best))
  24.           (recur (inc i) (list i length))
  25.           (recur (inc i) best))
  26.       best))))
  27.  
  28.  
  29. (time (longest-collatz 1000000))
Advertisement
Add Comment
Please, Sign In to add comment