CombinatoricsΒΆ

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

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    Combinations<String> combinations = new Combinations<String>(words,2);
10    
11    long N = combinations.computeTotalCombinations();
12    System.out.println("Total number of combinations = "+N+"\n");
13    List<String> 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