23ddfc9991876aed51c324e6d353fdfda201d6f1
[debian/gnuradio] / gnuradio-core / src / utils / permute.scm
1 (require 'common-list-functions)
2
3
4 (define (permute lst)
5   (define (aux set head)
6     (cond ((null? set) head)
7           (else
8            (map (lambda (x)
9                   (aux (set-difference set (list x))
10                        (cons x head)))
11                 set))))
12   (aux lst '()))
13
14 (define (permute-2 lst)
15   (let ((result '()))
16     (define (aux set head)
17       (if (null? set)
18           (set! result (cons head result))
19           (for-each (lambda (x)
20                       (aux (set-difference set (list x))
21                            (cons x head)))
22                     set)))
23     (aux lst '())
24     result))
25
26
27