Permutations: Difference between revisions
Content added Content deleted
Drkameleon (talk | contribs) |
|||
Line 1,876: | Line 1,876: | ||
(loop for a = "1234" then (next-perm a #'char<) while a do |
(loop for a = "1234" then (next-perm a #'char<) while a do |
||
(write-line a))</lang> |
(write-line a))</lang> |
||
Recursive implementation of Heap's algorithm: |
|||
<lang lisp>(defun heap-permutations (seq) |
|||
(let ((permutations nil)) |
|||
(labels ((permute (seq k) |
|||
(if (= k 1) |
|||
(push seq permutations) |
|||
(progn |
|||
(permute seq (1- k)) |
|||
(loop for i from 0 below (1- k) do |
|||
(if (evenp k) |
|||
(rotatef (elt seq i) (elt seq (1- k))) |
|||
(rotatef (elt seq 0) (elt seq (1- k)))) |
|||
(permute seq (1- k))))))) |
|||
(permute seq (length seq)) |
|||
permutations)))</lang> |
|||
=={{header|Crystal}}== |
=={{header|Crystal}}== |