I tried using your alternate definition for palindromes? , but an exception was thrown:
java.lang.NullPointerException [Thrown class java.lang.RuntimeException] On Feb 15, 7:02 am, Meikel Brandmeyer <m...@kotka.de> wrote: > Hi, > > On Feb 15, 2:50 pm, Glen Rubin <rubing...@gmail.com> wrote: > > > ;definition of a palindrome > > (defn palindrome? [s] > > (= s (apply str (reverse s)))) > > You might want to call vec on the string and then rseq instead of > reverse. reverse walks the string twice, while rseq just walks the > string once. The vector will use the underlying string as storage. > > (defn palindrome? > [s] > (= s (rseq (vec s)))) > > > ;list of palindromes for range of numbers > > (defn palindromes [start end] > > (def startmod (- start 1)) > > ^^^ No. No. No. Use (let [startmod (dec start)] ....)! def is > toplevel only! > > > > > (filter #(palindrome? (str %)) (range (* end end) (* startmod > > startmod) -1))) > > ;yields a lazy sequence of all that are divisible by a 3 digit > > number and yield a 3 digit quotient > > (defn divis-by-3dig [pal] > > (filter > > #(if (zero? (mod pal %)) (< 99 (unchecked-divide pal %) 1000)) > > (range 999 99 -1))) > > > (defn p1 [] > > (def palindromic-number (first (filter #(seq (divis-by-3dig %)) > > (palindromes 100 999)))) > > (def root1 (first (divis-by-3dig palindromic-number))) > > (def root2 (unchecked-divide palindromic-number root1)) > > (def message (str "the palindromic number is " palindromic-number " > > its roots are " root1" " root2)) > > message) > > Again: no nested def's, defn's, or anything else starting with def. > Use let! def is always global so this will not do, what you think it > does (ie. define a local). > > (defn p1 > [] > (let [palindromic-number (first (filter #(seq (divis-by-3dig %)) > (palindromes 100 999))) > root1 (first (divis-by-3dig palindromic-number)) > root2 (unchecked-divide palindromic-number root1)] > (str "the palindromic number is " palindromic-number " its roots > are " root1 " " root2))) > > Hope this helps. > > Sincerely > Meikel -- 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