Package cc.redberry.combinatorics
Class IntTuples
- java.lang.Object
-
- cc.redberry.combinatorics.IntTuples
-
- All Implemented Interfaces:
IntCombinatorialPort,java.io.Serializable
public final class IntTuples extends java.lang.Object implements IntCombinatorialPort
Iterator over all N-tuples (not necessary to be distinct), which can be chosen fromNarrays of integers of the form arrayi = [0, 1, 2, ..., Ki].
For example, if a set of arrays length is {Ki} = [2,3,2], then the following tuples will be producedarr lastUpdateDepth [0, 0, 0] 0 [0, 0, 1] 2 [0, 1, 0] 1 [0, 1, 1] 2 [0, 2, 0] 1 [0, 2, 1] 2 [1, 0, 0] 0 [1, 0, 1] 2 [1, 1, 0] 1 [1, 1, 1] 2 [1, 2, 0] 1 [1, 2, 1] 2Calculation of the next tuple occurs only on the invocation of
take().Note: method
take()returns the same reference on each invocation.- Since:
- 1.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface cc.redberry.combinatorics.IntCombinatorialPort
IntCombinatorialPort.Iterator
-
-
Field Summary
Fields Modifier and Type Field Description private int[]currentprivate intlastUpdateDepthprivate static longserialVersionUIDprivate int[]upperBounds
-
Constructor Summary
Constructors Constructor Description IntTuples(int... upperBounds)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidcheckWithException(int[] upperBounds)intgetLastUpdateDepth()int[]getReference()Returns the reference to the current iteration elementvoidreset()Resets the iterationint[]take()Calculates and returns the next combination or null, if no more combinations exist.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
upperBounds
private final int[] upperBounds
-
current
private int[] current
-
lastUpdateDepth
private int lastUpdateDepth
-
-
Method Detail
-
checkWithException
private static void checkWithException(int[] upperBounds)
-
take
public int[] take()
Description copied from interface:IntCombinatorialPortCalculates and returns the next combination or null, if no more combinations exist.- Specified by:
takein interfaceIntCombinatorialPort- Returns:
- the next combination or null, if no more combinations exist
-
getLastUpdateDepth
public int getLastUpdateDepth()
-
reset
public void reset()
Resets the iteration- Specified by:
resetin interfaceIntCombinatorialPort
-
getReference
public int[] getReference()
Description copied from interface:IntCombinatorialPortReturns the reference to the current iteration element- Specified by:
getReferencein interfaceIntCombinatorialPort- Returns:
- the reference to the current iteration element
-
-