Package groovy.util
Class PermutationGenerator<E>
- java.lang.Object
-
- groovy.util.PermutationGenerator<E>
-
- All Implemented Interfaces:
java.util.Iterator<java.util.List<E>>
public class PermutationGenerator<E> extends java.lang.Object implements java.util.Iterator<java.util.List<E>>
Systematically generate permutations. Adapted from Java Code by Michael Gilleland (released with no restrictions) using an algorithm described here: Kenneth H. Rosen, Discrete Mathematics and Its Applications, 2nd edition (NY: McGraw-Hill, 1991), pp. 282-284
-
-
Constructor Summary
Constructors Constructor Description PermutationGenerator(java.lang.Iterable<E> items)
PermutationGenerator(java.util.Collection<E> items)
WARNING: Don't make n too large.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.math.BigInteger
getTotal()
boolean
hasNext()
java.util.List<E>
next()
Generate next permutation (algorithm from Rosen p.void
remove()
void
reset()
-
-
-
Constructor Detail
-
PermutationGenerator
public PermutationGenerator(java.util.Collection<E> items)
WARNING: Don't make n too large. Recall that the number of permutations is n! which can be very large, even when n is as small as 20 -- 20! = 2,432,902,008,176,640,000 and 21! is too big to fit into a Java long, which is why we use BigInteger instead.- Parameters:
items
- the items to permute
-
PermutationGenerator
public PermutationGenerator(java.lang.Iterable<E> items)
-
-
Method Detail
-
reset
public void reset()
-
getTotal
public java.math.BigInteger getTotal()
-
hasNext
public boolean hasNext()
- Specified by:
hasNext
in interfacejava.util.Iterator<E>
-
next
public java.util.List<E> next()
Generate next permutation (algorithm from Rosen p. 284)- Specified by:
next
in interfacejava.util.Iterator<E>
- Returns:
- the items permuted
-
remove
public void remove()
- Specified by:
remove
in interfacejava.util.Iterator<E>
-
-