18 lines
658 B
Common Lisp
18 lines
658 B
Common Lisp
(defun mid3 (i)
|
|
(let ((ch-vec (coerce (format nil "~A" (abs i)) 'vector)))
|
|
(when (evenp (length ch-vec))
|
|
(return-from mid3
|
|
(format nil "Error: The number representation must have an odd ~
|
|
number of digits.")))
|
|
|
|
(when (and (< i 100)
|
|
(> i -100))
|
|
(return-from mid3
|
|
(format nil "Error: Must be >= 100 or <= -100.")))
|
|
(let ((half (/ (1- (length ch-vec)) 2)))
|
|
(return-from mid3 (format nil "~A~A~A"
|
|
(elt ch-vec (1- half))
|
|
(elt ch-vec half)
|
|
(elt ch-vec (1+ half))))
|
|
)))
|