X-Git-Url: https://git.gag.com/?p=debian%2Fgnuradio;a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Futils%2Fpermute.scm;fp=gnuradio-core%2Fsrc%2Futils%2Fpermute.scm;h=23ddfc9991876aed51c324e6d353fdfda201d6f1;hp=0000000000000000000000000000000000000000;hb=fd9980f919b6f05e2fbea404fea322825ce438f0;hpb=2415ccdbf9d97878a0888bbdff30d699ae2326dd diff --git a/gnuradio-core/src/utils/permute.scm b/gnuradio-core/src/utils/permute.scm new file mode 100644 index 00000000..23ddfc99 --- /dev/null +++ b/gnuradio-core/src/utils/permute.scm @@ -0,0 +1,27 @@ +(require 'common-list-functions) + + +(define (permute lst) + (define (aux set head) + (cond ((null? set) head) + (else + (map (lambda (x) + (aux (set-difference set (list x)) + (cons x head))) + set)))) + (aux lst '())) + +(define (permute-2 lst) + (let ((result '())) + (define (aux set head) + (if (null? set) + (set! result (cons head result)) + (for-each (lambda (x) + (aux (set-difference set (list x)) + (cons x head))) + set))) + (aux lst '()) + result)) + + +