### Problem 2 Description, from Project Euler

Find the sum of all the even-valued terms in the Fibonacci sequence which do not exceed four million.

### Solutions

#### My first attempt

The trickiest thing for me was figuring out how to write the fibonacci function in an elegant way. I know that with functional languages, recursion is supposed to be super elegant, and my solution was anything but.

(defn problem02 [] (defn fib [termCount] (defn fib-help [termCount, terms] (def rterms (reverse terms)) (def lst (first rterms)) (def nlst (first (rest rterms))) (if (< (count terms) termCount) (fib-help termCount (reverse (cons (+ lst nlst) rterms)) ) terms ) ) (fib-help termCount, `(1, 2)) ) (reduce + (filter #(and (< % 4000000) (even? %) ) (fib 200) )) ) (problem02)

#### A solution by another person

The site I linked to in the previous article as a much more elegant solution. I really had trouble figuring out how to do an elegant Fibonacci algorithm, although I knew that mine was inelegant!

(defn e2 [limit] (let [fibs2 (lazy-cat [0 1] (map + fibs2 (rest fibs2)))] (reduce + (filter #(zero? (mod % 2)) (take-while #(< % limit) fibs2)))))

I love the user of *lazy-cat*. I was trying to search for how to do this, but wasn’t sure what this was called. I only knew that the *iterate* function used something like this (I guess I could’ve checked it’s source). I find the use of map interesting, but confusing because it seems as if *fibs2* would return a list and that there should somehow be duplicate values in that list. I’m sure I will come to understand more later.

New blog post: Project Euler Problem 2 Solutio… /programming/project-euler-problem-2-solution-clojure/

This comment was originally posted on TwitterProject Euler Problem #2 in #clojure //ow.ly/1yjZB

This comment was originally posted on Twitter