net.ericaro.neoitertools.generators.combinatorics
Class Combinatorics

java.lang.Object
  extended by net.ericaro.neoitertools.generators.combinatorics.Combinatorics

public class Combinatorics
extends java.lang.Object

provides low level algorithms for permutations and combinations... Based on int[] to described indexes. Warning, those algorithms are memory efficient, and therefore do not copy int[] around all the time. This means that you shouldn't edit the int[] passed in the iterators. The goal is to use those indices for higher level algorithm.

Author:
eric
See Also:
Combinatorics's wiki page, neoitertools site

Constructor Summary
Combinatorics()
           
 
Method Summary
static
<T> Generator<java.util.List<T>>
applied(java.util.List<T> elements, Generator<int[]> indicesGenerator)
          Return a Generator over a list of applied transformation ( @see apply(List, int[]) .
static
<T> java.util.List<T>
apply(java.util.List<T> origin, int[] indices)
          Apply a transformation, described by the int[] to the given origin, into a new array.
static Generator<int[]> combinations(int m, int n)
          Calculate all subsets' indices
static Generator<int[]> permutations(int n)
          Calculate all permutations' indices
static Generator<int[]> product(int[] lengths)
          Calculate all product selectors' indices
static
<T> java.util.List<T>
select(java.util.List<java.util.List<T>> lists, int[] indices)
          Select on item per list, based on its index read in indices.
static
<T> Generator<java.util.List<T>>
selected(java.util.List<java.util.List<T>> lists, Generator<int[]> indicesGenerator)
          Return an Generator over a list of selection ( @see select(List, int[]) .
static Generator<int[]> sublists(int m, int n)
          Calculate sublists' indexes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Combinatorics

public Combinatorics()
Method Detail

permutations

public static Generator<int[]> permutations(int n)
Calculate all permutations' indices

Parameters:
n -
Returns:
an Generator containing indices

product

public static Generator<int[]> product(int[] lengths)
Calculate all product selectors' indices

Parameters:
lengths -

combinations

public static Generator<int[]> combinations(int m,
                                            int n)
Calculate all subsets' indices

Parameters:
m - larger size
n - size of the subsets
Returns:
an Generator for the indices

sublists

public static Generator<int[]> sublists(int m,
                                        int n)
Calculate sublists' indexes

Parameters:
m - larger size
n - size of the sublists
Returns:
an Generator containing the indexes

apply

public static <T> java.util.List<T> apply(java.util.List<T> origin,
                                          int[] indices)
Apply a transformation, described by the int[] to the given origin, into a new array.

Type Parameters:
T -
Parameters:
origin -
indices -

select

public static <T> java.util.List<T> select(java.util.List<java.util.List<T>> lists,
                                           int[] indices)
Select on item per list, based on its index read in indices. lets define:

size : len( lists )

sizes[i] = len( lists[i] )

then :

if len(indices) > size then indices[i] is associated with lists[i%size]

and

indices[i] in [0 , sizes[i]   [

Parameters:
lists -
indices -
Returns:
list of length size, with T values

selected

public static <T> Generator<java.util.List<T>> selected(java.util.List<java.util.List<T>> lists,
                                                        Generator<int[]> indicesGenerator)
Return an Generator over a list of selection ( @see select(List, int[]) .

Parameters:
lists -
indicesGenerator -

applied

public static <T> Generator<java.util.List<T>> applied(java.util.List<T> elements,
                                                       Generator<int[]> indicesGenerator)
Return a Generator over a list of applied transformation ( @see apply(List, int[]) .

Parameters:
elements -
indicesGenerator -
Returns:


Copyright © 2011. All Rights Reserved.