package com.ikokoon.toolkit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.log4j.Logger;
/**
* This class generates the permutations for parameters.
*
* @author Michael Couck
* @since 06.10.09
* @version 01.00
*/
public class Permutations {
private Logger logger = Logger.getLogger(Permutations.class);
public void getPermutations(Object[] objects) {
int N = objects.length;
Object[] newObjects = new Object[N];
for (int i = 0; i < N; i++) {
newObjects[i] = objects[i];
}
List<Object[]> permutations = new ArrayList<Object[]>();
getPermutations(newObjects, permutations, N);
}
public void getPermutations(Object[] objects, List<Object[]> permutations, int n) {
if (n == 1) {
for (Object object : objects) {
logger.debug(object + ":");
}
permutations.add(Arrays.copyOf(objects, objects.length));
return;
}
for (int i = 0; i < n; i++) {
swap(objects, i, n - 1);
getPermutations(objects, permutations, n - 1);
swap(objects, i, n - 1);
}
}
private Object[] swap(Object[] objects, int i, int j) {
Object s = objects[i];
objects[i] = objects[j];
objects[j] = s;
return objects;
}
}