CombinatoricsΒΆ

Example that demonstrates how to compute all the combinations and permutations of a set.

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
      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() );