# 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 public static void main( String []args ) {
2     List<String> words = new ArrayList<String>();
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
```