Hi, I just started to learn clojure in a more serious way and I am doing the first level of the greplin challenge.
I made it to work with a short palindrome like the example they give me, but when it comes to work with the input file, it takes for ever and I have to stop it. $ time clj level1.clj ^C real 11m35.477s user 1m44.431s sys 9m3.878s This is my code: (defn palindrome? [s] (= s (reduce str (reverse s)))) (defn all-combs [in] (let [len (count in)] (for [i (range 0 (- len 2)), j (range (+ i 1) len)] (subs in i j)))) (defn max-comp [x y] (let [lenx (count x), leny (count y)] (cond (< lenx leny) 1 (= lenx leny) 0 (> lenx leny) -1))) ;;(let [input "I like racecars that go fast"] (let [input (slurp "../_input/level1.in")] (println (nth (sort max-comp (filter palindrome? (all-combs input))) 0))) The input file is this http://challenge.greplin.com/static/gettysburg.txt It looks a bit procedural. It is long, but I don't think is the biggest bottleneck, I think it is my approach to create all the combinations possible for substrings. Maybe I should be using a lazy seq? How would I go to do that? -- 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