I see some more clever ways have been posted.

Perhaps a more interesting, general problem: detect if the input is an
arithmetic sequence at all.

Here's a few implementations to get you started.

Straightforward:

(let [diffs (map - xs (rest xs))]
  (every? identity (map = diffs (rest diffs))))

Ultra-sneaky:

(= 1 (count (distinct (map - xs (rest xs)))))

Speedy Gonzales:

(let [r (next xs)
      s (first r)
      diff (- s (first xs))]
  (loop [f s r (next r)]
    (if xs
      (let [s (first r)]
        (if (== diff (- s f))
          (recur s (next r))))
      true)))

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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