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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public static void main( String []args ) {
    List<String> words = new ArrayList<String>();
    words.add("cat");
    words.add("dog");
    words.add("bird");
    words.add("moose");

    // Demonstration of going through all of the sets combinations
    Combinations<String> combinations = new Combinations<String>(words,2);
    
    long N = combinations.computeTotalCombinations();
    System.out.println("Total number of combinations = "+N+"\n");
    List<String> bucket = new ArrayList<String>();
    int i = 0;
    do {
        combinations.getBucket(bucket);
        System.out.printf("i = %2d || ", i);
        for( String s : bucket ) {
            System.out.print(s+" ");
        }
        System.out.println();
        i++;
    } while( combinations.next() );

    System.out.println("\nReverse");
    i = 0;
    do {
        combinations.getBucket(bucket);
            
        System.out.printf("i = %2d || ", i);
        for( String s : bucket ) {
            System.out.print(s+" ");
        }
        System.out.println();
        i++;
    } while( combinations.previous() );

    // Demonstration of going through all of the sets permutations
    Permute<String> permute = new Permute<String>(words);

    N = permute.getTotalPermutations();
    System.out.println("\n\nTotal number of permutations = "+N+"\n");
    i = 0;
    do {
        permute.getPermutation(bucket);
        System.out.printf("i = %2d || ", i);
        for( String s : bucket ) {
            System.out.print(s+" ");
        }
        System.out.println();
        i++;
    } while( permute.next() );

    System.out.println("\nReverse");
    i = 0;
    do {
        permute.getPermutation(bucket);

        System.out.printf("i = %2d || ", i);
        for( String s : bucket ) {
            System.out.print(s+" ");
        }
        System.out.println();
        i++;
    } while( permute.previous() );
}

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