17 lines
495 B
Text
17 lines
495 B
Text
(defun reverse-split-at-r (xs i ys)
|
|
(if (zp i)
|
|
(mv xs ys)
|
|
(reverse-split-at-r (rest xs) (1- i)
|
|
(cons (first xs) ys))))
|
|
|
|
(defun reverse-split-at (xs i)
|
|
(reverse-split-at-r xs i nil))
|
|
|
|
(defun is-palindrome (str)
|
|
(let* ((lngth (length str))
|
|
(idx (floor lngth 2)))
|
|
(mv-let (xs ys)
|
|
(reverse-split-at (coerce str 'list) idx)
|
|
(if (= (mod lngth 2) 1)
|
|
(equal (rest xs) ys)
|
|
(equal xs ys)))))
|