# Package de.caff.generics.util.combi

This package contains combinatorics algorithms.

See: Description

- Class Summary
  Class | Description
  --- | ---
  Combinations<T> | Create all combinations.
  Combinations.OfBoolean | Combinations of boolean values.
  Combinations.OfByte | Combinations of byte values.
  Combinations.OfChar | Combinations of char values.
  Combinations.OfDouble | Combinations of double values.
  Combinations.OfFloat | Combinations of float values.
  Combinations.OfInt | The combinations of integer values.
  Combinations.OfLong | Combinations of long values.
  Combinations.OfRange | The combinations of an index range.
  Combinations.OfShort | Combinations of short values.
  Combinations.OfString | The combinations of the characters of a string, as strings.
  IntPartitions | Partition of a positive integer value.
  IntPartitions.Part | One part of a partition.
  IntPartitions.Partition | One partition.
  Permutations<T> | Helper class for permutations.
  Permutations.OfBoolean | The permutations of boolean values.
  Permutations.OfByte | The permutations of byte values.
  Permutations.OfChar | The permutations of char values.
  Permutations.OfDouble | The permutations of double values.
  Permutations.OfFloat | The permutations of float values.
  Permutations.OfInt | The permutations of integer values.
  Permutations.OfLong | The permutations of long values.
  Permutations.OfRange | The permutations of an index range.
  Permutations.OfShort | The permutations of short values.
  Permutations.OfString | The permutations of the characters of a string, as strings.
  Permutations.RangeIterator | Iterator using the Steinhaus-Johnson-Trotter algorithm for an index range.

## Package de.caff.generics.util.combi Description

This package contains combinatorics algorithms.

Currently the following classes handling standard problems are available:

- `Permutations` takes care of permutations and can create permutated versions of any set of objects lazily.
- `Combinations` does similar things for n choose k stuff.

Both provide ways to work on basic collections of object types (although they make use of read-only classes provided by this library, esp. `Indexable`). They also provide implementations for sets of primitive types.