Permutations: Difference between revisions
Content added Content deleted
(Add Seed7 example) |
(→{{header|Scheme}}: Add a much better version, translated from erlang) |
||
Line 1,814:
=={{header|Scheme}}==
{{trans|Erlang}}
<lang scheme>
(define (insert l n e)
(if (= 0 n)
(cons e l)
(cons (car l)
(insert (cdr l) (- n 1) e))))
(define (seq start end)
(if (= start end)
(list end)
(cons start (seq (+ start 1) end))))
(define (permute l)
(if (null? l)
'(())
(apply append (map (lambda (p)
(map (lambda (n)
(insert p n (car l)))
(seq 0 (length p))))
(permute (cdr l))))))
</lang>
{{trans|OCaml}}
<lang scheme>; translation of ocaml : mostly iterative, with auxiliary recursive functions for some loops
(define (vector-swap! v i j)
|