CombinatoricsΒΆ

Example that demonstrates how to compute all the combinations and permutations of a set. Each variant is printed. See example output below.

https://github.com/lessthanoptimal/ddogleg/tree/v0.23.3/examples/src/org/ddogleg/example/ExampleCombinatorics.java

 1public static void main( String[] args ) {
 2    List<String> words = new ArrayList<String>();
 3    words.add("cat");
 4    words.add("dog");
 5    words.add("bird");
 6    words.add("moose");
 7
 8    // Demonstration of going through all of the sets combinations
 9    var combinations = new Combinations<String>(words, 2);
10
11    long N = combinations.computeTotalCombinations();
12    System.out.println("Total number of combinations = " + N + "\n");
13    var bucket = new ArrayList<String>();
14    int i = 0;
15    do {
16        combinations.getBucket(bucket);
17        System.out.printf("i = %2d || ", i);
18        for (String s : bucket) {
19            System.out.print(s + " ");
20        }
21        System.out.println();
22        i++;
23    } while (combinations.next());
24
25    System.out.println("\nReverse");
26    i = 0;
27    do {
28        combinations.getBucket(bucket);
29
30        System.out.printf("i = %2d || ", i);
31        for (String s : bucket) {
32            System.out.print(s + " ");
33        }
34        System.out.println();
35        i++;
36    } while (combinations.previous());
37
38    // Demonstration of going through all of the sets permutations
39    Permute<String> permute = new Permute<String>(words);
40
41    N = permute.getTotalPermutations();
42    System.out.println("\n\nTotal number of permutations = " + N + "\n");
43    i = 0;
44    do {
45        permute.getPermutation(bucket);
46        System.out.printf("i = %2d || ", i);
47        for (String s : bucket) {
48            System.out.print(s + " ");
49        }
50        System.out.println();
51        i++;
52    } while (permute.next());
53
54    System.out.println("\nReverse");
55    i = 0;
56    do {
57        permute.getPermutation(bucket);
58
59        System.out.printf("i = %2d || ", i);
60        for (String s : bucket) {
61            System.out.print(s + " ");
62        }
63        System.out.println();
64        i++;
65    } while (permute.previous());
66}

Output:

Total number of combinations = 6

i =  0 || cat dog
i =  1 || cat bird
i =  2 || cat moose
i =  3 || dog bird
i =  4 || dog moose
i =  5 || bird moose

Reverse
i =  0 || bird moose
i =  1 || dog moose
i =  2 || dog bird
i =  3 || cat moose
i =  4 || cat bird
i =  5 || cat dog


Total number of permutations = 24

i =  0 || cat dog bird moose
i =  1 || cat dog moose bird
i =  2 || cat bird dog moose
i =  3 || cat bird moose dog
i =  4 || cat moose bird dog
i =  5 || cat moose dog bird
i =  6 || dog cat bird moose
i =  7 || dog cat moose bird
i =  8 || dog bird cat moose
i =  9 || dog bird moose cat
i = 10 || dog moose bird cat
i = 11 || dog moose cat bird
i = 12 || bird dog cat moose
i = 13 || bird dog moose cat
i = 14 || bird cat dog moose
i = 15 || bird cat moose dog
i = 16 || bird moose cat dog
i = 17 || bird moose dog cat
i = 18 || moose dog bird cat
i = 19 || moose dog cat bird
i = 20 || moose bird dog cat
i = 21 || moose bird cat dog
i = 22 || moose cat bird dog
i = 23 || moose cat dog bird

Reverse
i =  0 || moose cat dog bird
i =  1 || moose cat bird dog
i =  2 || moose bird cat dog
i =  3 || moose bird dog cat
i =  4 || moose dog cat bird
i =  5 || moose dog bird cat
i =  6 || bird moose dog cat
i =  7 || bird moose cat dog
i =  8 || bird cat moose dog
i =  9 || bird cat dog moose
i = 10 || bird dog moose cat
i = 11 || bird dog cat moose
i = 12 || dog moose cat bird
i = 13 || dog moose bird cat
i = 14 || dog bird moose cat
i = 15 || dog bird cat moose
i = 16 || dog cat moose bird
i = 17 || dog cat bird moose
i = 18 || cat moose dog bird
i = 19 || cat moose bird dog
i = 20 || cat bird moose dog
i = 21 || cat bird dog moose
i = 22 || cat dog moose bird
i = 23 || cat dog bird moose