Skip to content

Instantly share code, notes, and snippets.

@ypsilon-takai
Created December 8, 2011 10:54
Show Gist options
  • Select an option

  • Save ypsilon-takai/1446706 to your computer and use it in GitHub Desktop.

Select an option

Save ypsilon-takai/1446706 to your computer and use it in GitHub Desktop.
project euler 71
;; Problem 71 : 2011/12/8
;; "Elapsed time: 151.987474 msecs"
(defn my-numerator [n]
(if (integer? n)
n
(numerator (rationalize n))))
(defn my-denominator [n]
(if (integer? n)
1
(denominator (rationalize n))))
(defn frac-reduce [n d]
(let [frac (/ n d)]
[(my-numerator frac) (my-denominator frac)]))
(defn pe-71 [base left lmt]
(let [[base-n base-d] base
[left-n left-d] left]
(loop [left-num left-n, left-den left-d]
(let [[new-num new-den] (frac-reduce (+ base-n left-num) (+ base-d left-den))]
(if (> new-den lmt)
(/ left-num left-den)
(recur new-num new-den))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment