>>565 ちょっと前に作ったやつ
(define (ex efrom eto er)
(let G45 ((G41 efrom) (G42 eto) (G43 er) (G44 '()))
(let G47 ((G46 G41))
(cond
((<= G46 G42)
(cond
((< 0 G43)
(if (not (memv G46 G44))
(let ((G48 (G45 G41 G42 (- G43 1) (cons G46 G44))))
(if (and (pair? G48) (pair? (car G48)))
(append G48 (G47 (+ G46 1)))
(cons G48 (G47 (+ G46 1)))))
(G47 (+ G46 1))))
(else (reverse G44))))
(else '())))))
0〜3(4桁)までの組み合わせ全部
>(ex 0 3 4)
=>((0 1 2 3) (0 1 3 2) (0 2 1 3) (0 2 3 1) (0 3 1 2) (0 3 2 1) (1 0 2 3) (1 0 3 2)
(1 2 0 3) (1 2 3 0) (1 3 0 2) (1 3 2 0) (2 0 1 3) (2 0 3 1) (2 1 0 3) (2 1 3 0)
(2 3 0 1) (2 3 1 0) (3 0 1 2) (3 0 2 1) (3 1 0 2) (3 1 2 0) (3 2 0 1) (3 2 1 0))