fork download
  1. ; your code goes here
  2. (defun perm (l)
  3. (when (null l) (return-from perm nil))
  4. (when (= (length l) 1) (return-from perm (list l)))
  5. (mapcan (lambda (e)
  6. (mapcar (lambda (p)
  7. (append (list e) p))
  8. (perm (remove e l))))
  9. l))
  10.  
  11. (dolist (p (perm '(1 2 3 4 5)))
  12. (format t "~A~%" p))
Success #stdin #stdout 0.03s 10832KB
stdin
Standard input is empty
stdout
(1 2 3 4 5)
(1 2 3 5 4)
(1 2 4 3 5)
(1 2 4 5 3)
(1 2 5 3 4)
(1 2 5 4 3)
(1 3 2 4 5)
(1 3 2 5 4)
(1 3 4 2 5)
(1 3 4 5 2)
(1 3 5 2 4)
(1 3 5 4 2)
(1 4 2 3 5)
(1 4 2 5 3)
(1 4 3 2 5)
(1 4 3 5 2)
(1 4 5 2 3)
(1 4 5 3 2)
(1 5 2 3 4)
(1 5 2 4 3)
(1 5 3 2 4)
(1 5 3 4 2)
(1 5 4 2 3)
(1 5 4 3 2)
(2 1 3 4 5)
(2 1 3 5 4)
(2 1 4 3 5)
(2 1 4 5 3)
(2 1 5 3 4)
(2 1 5 4 3)
(2 3 1 4 5)
(2 3 1 5 4)
(2 3 4 1 5)
(2 3 4 5 1)
(2 3 5 1 4)
(2 3 5 4 1)
(2 4 1 3 5)
(2 4 1 5 3)
(2 4 3 1 5)
(2 4 3 5 1)
(2 4 5 1 3)
(2 4 5 3 1)
(2 5 1 3 4)
(2 5 1 4 3)
(2 5 3 1 4)
(2 5 3 4 1)
(2 5 4 1 3)
(2 5 4 3 1)
(3 1 2 4 5)
(3 1 2 5 4)
(3 1 4 2 5)
(3 1 4 5 2)
(3 1 5 2 4)
(3 1 5 4 2)
(3 2 1 4 5)
(3 2 1 5 4)
(3 2 4 1 5)
(3 2 4 5 1)
(3 2 5 1 4)
(3 2 5 4 1)
(3 4 1 2 5)
(3 4 1 5 2)
(3 4 2 1 5)
(3 4 2 5 1)
(3 4 5 1 2)
(3 4 5 2 1)
(3 5 1 2 4)
(3 5 1 4 2)
(3 5 2 1 4)
(3 5 2 4 1)
(3 5 4 1 2)
(3 5 4 2 1)
(4 1 2 3 5)
(4 1 2 5 3)
(4 1 3 2 5)
(4 1 3 5 2)
(4 1 5 2 3)
(4 1 5 3 2)
(4 2 1 3 5)
(4 2 1 5 3)
(4 2 3 1 5)
(4 2 3 5 1)
(4 2 5 1 3)
(4 2 5 3 1)
(4 3 1 2 5)
(4 3 1 5 2)
(4 3 2 1 5)
(4 3 2 5 1)
(4 3 5 1 2)
(4 3 5 2 1)
(4 5 1 2 3)
(4 5 1 3 2)
(4 5 2 1 3)
(4 5 2 3 1)
(4 5 3 1 2)
(4 5 3 2 1)
(5 1 2 3 4)
(5 1 2 4 3)
(5 1 3 2 4)
(5 1 3 4 2)
(5 1 4 2 3)
(5 1 4 3 2)
(5 2 1 3 4)
(5 2 1 4 3)
(5 2 3 1 4)
(5 2 3 4 1)
(5 2 4 1 3)
(5 2 4 3 1)
(5 3 1 2 4)
(5 3 1 4 2)
(5 3 2 1 4)
(5 3 2 4 1)
(5 3 4 1 2)
(5 3 4 2 1)
(5 4 1 2 3)
(5 4 1 3 2)
(5 4 2 1 3)
(5 4 2 3 1)
(5 4 3 1 2)
(5 4 3 2 1)