PathTilePermuter permuter = new PathTilePermuter(originalPath);
if (indices.size() == 2) {
List<Integer> newOrder = new ArrayList<Integer>(indices);
Collections.reverse(newOrder);
TantrixPath permutedPath = permuter.permute(newOrder, indices);
permutedPaths.add(permutedPath);
}
else if (indices.size() > 2) {
// add the original originalPath for now, to be sure we do not duplicated it, but return at end.
permutedPaths.add(originalPath);
int numIter = Math.min(originalPath.size() + 1, MAX_ITER);
for (int i = 0; i < numIter; i++) {
List<Integer> newOrder = new ArrayList<Integer>(indices);
Collections.shuffle(newOrder, MathUtil.RANDOM);
TantrixPath permutedPath = permuter.permute(newOrder, indices);
if (!permutedPaths.contains(permutedPath)) {
permutedPaths.add(permutedPath);
}
}
permutedPaths.remove(0);