File: permute

package info (click to toggle)
scheme9 2025.08.12-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,080 kB
  • sloc: lisp: 16,752; ansic: 11,869; sh: 806; makefile: 237; sed: 6
file content (16 lines) | stat: -rw-r--r-- 596 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
S9 LIB  (permute integer list)   ==>  list
        (permute* integer list)  ==>  list

        (load-from-library "permute.scm")

Create k-permutations of the elements of the given list. K (the
size of the permutations) is specified in the integer argument.
PERMUTE creates permutations without repetition and PERMUTE*
creates permutations with repetition.

(permute 2 '(a b c))   ==>  ((a b) (b a) (a c)
                             (c a) (b c) (c b))

(permute* 2 '(a b c))  ==>  ((a a) (a b) (a c)
                             (b a) (b b) (b c)
                             (c a) (c b) (c c))