package org.matheclipse.combinatoric;

import java.util.List;

/**
 * Abstract step visitor for java.util.Lists.
 * 
 */
public abstract class AbstractListStepVisitor implements IStepVisitor {
	protected final List list;
	protected Object[] array;

	public AbstractListStepVisitor(List list) {
		this(list, 0, list.size());
	}

	public AbstractListStepVisitor(List list, int start) {
		this(list, start, list.size());
	}

	public AbstractListStepVisitor(List list, int start, int end) {
		this.list = list;
		toIntArray(list, start, end);
	}

	/**
	 * Convert the sortedList to an int[] array. Equal
	 * elements get the same index in the resulting int[] array.
	 * 
	 * @param 
	 * @param sortedList
	 * @param start
	 * @param end
	 * @return
	 */
	final private void toIntArray(List sortedList, int start, int end) {
		array = new Object[end - start];
		int index = 0;
		for (int i = start; i < end; i++) {
			array[index++] = sortedList.get(i);
		}
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see org.matheclipse.combinatoric.IStepVisitor#visit(int[][])
	 */
	public boolean visit(int[][] result)	{
		return true;
	}
	
	/**
	 * {@inheritDoc}
	 * 
	 * @see org.matheclipse.combinatoric.IStepVisitor#visit(int[][])
	 */
	public boolean visit(int[] result)	{
		return true;
	}
	
	/**
	 * {@inheritDoc}
	 * 
	 * @see org.matheclipse.combinatoric.IStepVisitor#getMultisetArray()
	 */
	public int[] getMultisetArray() {
		int[] result = new int[array.length];
		int counter = 0;
		for (int i = 0; i < result.length; i++) {
			result[i] = counter++;
		}
		return result;
	}
}

 

Ads help maintain this website.