]> gitweb.factorcode.org Git - factor.git/blob - basis/math/combinatorics/combinatorics-tests.factor
core: Rename iota to <iota> so we can have TUPLE: iota ... ; instead of TUPLE: iota...
[factor.git] / basis / math / combinatorics / combinatorics-tests.factor
1 USING: arrays kernel math math.combinatorics
2 math.combinatorics.private tools.test sequences ;
3 IN: math.combinatorics.tests
4
5 { 1 } [ -1 factorial ] unit-test ! required by other math.combinatorics words
6 { 1 } [ 0 factorial ] unit-test
7 { 1 } [ 1 factorial ] unit-test
8 { 3628800 } [ 10 factorial ] unit-test
9
10 { 1 } [ 3 0 nPk ] unit-test
11 { 6 } [ 3 2 nPk ] unit-test
12 { 6 } [ 3 3 nPk ] unit-test
13 { 0 } [ 3 4 nPk ] unit-test
14 { 311875200 } [ 52 5 nPk ] unit-test
15 { 672151459757865654763838640470031391460745878674027315200000000000 } [ 52 47 nPk ] unit-test
16
17 { 1 } [ 3 0 nCk ] unit-test
18 { 3 } [ 3 2 nCk ] unit-test
19 { 1 } [ 3 3 nCk ] unit-test
20 { 0 } [ 3 4 nCk ] unit-test
21 { 2598960 } [ 52 5 nCk ] unit-test
22 { 2598960 } [ 52 47 nCk ] unit-test
23
24
25 { { } } [ 0 factoradic ] unit-test
26 { { 1 0 } } [ 1 factoradic ] unit-test
27 { { 1 1 0 3 0 1 0 } } [ 859 factoradic ] unit-test
28
29 { { 0 1 2 3 } } [ { 0 0 0 0 } >permutation ] unit-test
30 { { 0 1 3 2 } } [ { 0 0 1 0 } >permutation ] unit-test
31 { { 1 2 0 6 3 5 4 } } [ { 1 1 0 3 0 1 0 } >permutation ] unit-test
32
33 { { 0 1 2 3 } } [ 0 4 <iota> permutation-indices ] unit-test
34 { { 0 1 3 2 } } [ 1 4 <iota> permutation-indices ] unit-test
35 { { 1 2 0 6 3 5 4 } } [ 859 7 <iota> permutation-indices ] unit-test
36
37 { { "a" "b" "c" "d" } } [ 0 { "a" "b" "c" "d" } permutation ] unit-test
38 { { "d" "c" "b" "a" } } [ 23 { "a" "b" "c" "d" } permutation ] unit-test
39 { { "d" "a" "b" "c" } } [ 18 { "a" "b" "c" "d" } permutation ] unit-test
40
41 { { { "a" "b" "c" } { "a" "c" "b" }
42     { "b" "a" "c" } { "b" "c" "a" }
43     { "c" "a" "b" } { "c" "b" "a" } } } [ { "a" "b" "c" } all-permutations ] unit-test
44
45 { { 0 1 2 } } [ { "a" "b" "c" } inverse-permutation ] unit-test
46 { { 2 1 0 } } [ { "c" "b" "a" } inverse-permutation ] unit-test
47 { { 3 0 2 1 } } [ { 12 45 34 2 } inverse-permutation ] unit-test
48
49 { "" } [ "" next-permutation ] unit-test
50 { "1" } [ "1" next-permutation ] unit-test
51 { "21" } [ "12" next-permutation ] unit-test
52 { "8344112666" } [ "8342666411" next-permutation ] unit-test
53 { "ABC" "ACB" "BAC" "BCA" "CAB" "CBA" "ABC" }
54 [ "ABC" 6 [ dup dup clone-like next-permutation ] times ] unit-test
55
56 { { 0 1 2 } } [ 0 3 5 combination-indices ] unit-test
57 { { 2 3 4 } } [ 9 3 5 combination-indices ] unit-test
58
59 { { "a" "b" "c" } } [ 0 { "a" "b" "c" "d" "e" } 3 combination ] unit-test
60 { { "c" "d" "e" } } [ 9 { "a" "b" "c" "d" "e" } 3 combination ] unit-test
61
62 { { { "a" "b" } { "a" "c" }
63     { "a" "d" } { "b" "c" }
64     { "b" "d" } { "c" "d" } } } [ { "a" "b" "c" "d" } 2 all-combinations ] unit-test
65
66 { { { } } } [ { } all-subsets ] unit-test
67
68 { { { } { 1 } { 2 } { 3 } { 1 2 } { 1 3 } { 2 3 } { 1 2 3 } } }
69 [ { 1 2 3 } all-subsets ] unit-test
70
71 { { } } [ { 1 2 } 0 selections ] unit-test
72
73 { { { 1 } { 2 } } } [ { 1 2 } 1 selections ] unit-test
74 { { { { 1 } } { 2 } } } [ { { 1 } 2 } 1 selections ] unit-test
75
76 { { { 1 1 } { 1 2 } { 2 1 } { 2 2 } } }
77 [ { 1 2 } 2 selections ] unit-test
78
79 { { { 1 1 1 } { 1 1 2 } { 1 2 1 } { 1 2 2 }
80     { 2 1 1 } { 2 1 2 } { 2 2 1 } { 2 2 2 } } }
81 [ { 1 2 } 3 selections ] unit-test
82
83 { { "aa" "ab" "ac" "ba" "bb" "bc" "ca" "cb" "cc" } }
84 [ "abc" 2 selections ] unit-test
85
86 { V{ { 1 2 } { 1 3 } } }
87 [ { 1 2 3 } 2 [ { 1 } head? ] filter-combinations ] unit-test
88
89 { { 3 4 5 } }
90 [ { 1 2 3 } 2 [ sum ] map-combinations ] unit-test
91
92 { V{ { 1 2 3 } { 1 3 2 } } }
93 [ { 1 2 3 } [ { 1 } head? ] filter-permutations ] unit-test
94
95 { { 6 6 6 6 6 6 } }
96 [ { 1 2 3 } [ sum ] map-permutations ] unit-test
97
98 { f } [ { 1 2 3 } 2 [ last 4 = ] find-combination ] unit-test
99 { { 2 3 } } [ { 1 2 3 } 2 [ first 2 = ] find-combination ] unit-test
100
101 { f } [ { 1 2 3 } [ last 4 = ] find-permutation ] unit-test
102 { { 2 1 3 } } [ { 1 2 3 } [ first 2 = ] find-permutation ] unit-test
103
104 { { { 0 1 2 } { 0 2 1 } { 1 0 2 } { 1 2 0 } { 2 0 1 } { 2 1 0 } } }
105 [ 3 <iota> <permutations> >array ] unit-test
106
107 { { "as" "ad" "af" "sa" "sd" "sf" "da" "ds" "df" "fa" "fs" "fd" } }
108 [ "asdf" 2 <k-permutations> >array ] unit-test