(defn middle3 [v] (let [no (Math/abs v) digits (str no) len (count digits)] (cond (< len 3) :too_short (even? len) :no_middle_in_even_no_of_digits :else (let [mid (/ len 2) start (- mid 2)] (apply str (take 3 (nthnext digits start))))))) (def passes '(123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345)) (def fails '(1 2 -1 -10 2002 -2002 0))