Lisp Perm Check
(defun perm-check (a)
(let* ((sorted (sort (copy-list a) #'<))
(vec (coerce sorted 'vector))
(n (length vec)))
(loop for k from 0 below n
do (when (and (< (1+ k) n) (/= (aref vec k) (1+ k)))
(return-from perm-check 0)))
1))
This validates that every value from 1 to N appears exactly once.