(defun enc-perm (p) (let ((d (digits (logior 4096 p) 2))) (mapcar (do if (zerop @2) #\- @1) "sgtrwxrwxrwx" (rest d)))) (defun dec-perm (s) (let ((d (mapcar (do cond ((eql @1 @2) 1) ((eql #\- @2) 0) (t (error `decode-perm: invalid input @s`))) "sgtrwxrwxrwx" s))) (poly 2 d)))