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