try this:

(defn equal-values [seqs]
 "Given a list of ascending sequences, returns a lazy sequence containing
 only values that exist in all of the sequences."
 (lazy-seq
  (if (empty? (first seqs))
    []
    (let [first-values (map first seqs)]
      (if (apply = first-values)
        (cons (first first-values)
              (equal-values (map rest seqs)))
        (let [min-value (apply min first-values)]
          (equal-values (map #(if (= (first %) min-value) (rest %) %)
seqs))))))))

changes: i have moved lazy-seq and replaced your recur with a call to
the function

that gives me:

(1 40755 1533776805)

hope that helps
gaz

2011/1/20 Marek Stępniowski <mstepniow...@gmail.com>:
> Hi,
> I'm Marek Stępniowski, a Python developer trying to learn a new
> language by night. I'm new to this group.
>
> When solving problem 45 from Project Euler [1] I have tried to learn
> how lazy-seq macro should be used and wrote the code below::
>
> (defn pentagonal-numbers []
>  (map #(* 1/2 % (dec (* 3 %))) (iterate inc 1)))
>
> (defn hexagonal-numbers []
>  (map #(* % (dec (* 2 %))) (iterate inc 1)))
>
> (defn equal-values [seqs]
>  "Given a list of ascending sequences, returns a lazy sequence containing
>  only values that exist in all of the sequences."
>  (if (empty? (first seqs))
>   []
>   (let [first-values (map first seqs)]
>     (if (apply = first-values)
>       (lazy-seq (cons (first first-values)
>                       (equal-values (map rest seqs))))
>       (let [min-value (apply min first-values)]
>         (recur (map #(if (= (first %) min-value) (rest %) %) seqs)))))))
>
> Unfortunately running::
>
> (take 3 (equal-values [(pentagonal-numbers) (hexagonal-numbers)]))
>
> Results in heap space overflow exception (at max heap size = 256MB).
>
> I agree that it's a very naive solution, and that finding a third
> element of the list will take a lot of time. I still fail to
> understand why it's also needing all the memory. I'd be grateful for
> any pointers. What am I doing wrong here?
>
>
> [1] Project Euler problem 45:
> http://projecteuler.net/index.php?section=problems&id=45 - I find
> solving Project Euler problems is a good way to learn the new
> language, while refreshing computer science and math theory at the
> same time. If you're interested, you can find my git repository with
> 39 problems solved here: https://github.com/zuber/project-euler
>
>
> Thanks,
> --
> Marek Stępniowski
> http://stepniowski.com
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to