20 lines
522 B
Plaintext
20 lines
522 B
Plaintext
(define insert
|
|
L 0 E -> [E|L]
|
|
[L|Ls] N E -> [L|(insert Ls (- N 1) E)])
|
|
|
|
(define seq
|
|
Start Start -> [Start]
|
|
Start End -> [Start|(seq (+ Start 1) End)])
|
|
|
|
(define append-lists
|
|
[] -> []
|
|
[A|B] -> (append A (append-lists B)))
|
|
|
|
(define permutate
|
|
[] -> [[]]
|
|
[H|T] -> (append-lists (map (/. P
|
|
(map (/. N
|
|
(insert P N H))
|
|
(seq 0 (length P))))
|
|
(permute T))))
|