package pathgame.algorithm;

import java.util.ArrayList;

public class OddDegreeList {
    private ArrayList<Integer> items = new ArrayList<>();
    private ArrayList<Boolean> itemUsed = new ArrayList<>();

    public void add(int vertex) {
        items.add(vertex);
        itemUsed.add(false);
    }

    public int size() {
        return items.size();
    }

    public void resetUsed() {
        for(int i = 0; i < itemUsed.size(); i++) {
            itemUsed.set(i, false);
        }
    }

    public int getUnused(int offSet) {
        return items.get(getOffsetPos(offSet));
    }

    public int makeOffsetUsed(int offSet) {
        int pos = getOffsetPos(offSet);
        itemUsed.set(pos, true);
        return pos;
    }

    public void makePosUsed(int pos) {
        itemUsed.set(pos, true);
    }

    public void makeUnused(int pos) {
        itemUsed.set(pos, false);
    }

    private int getOffsetPos(int offSet) {
        int foundValid = 0;

        for (int i = 0; i < items.size(); i++) {
            if (!itemUsed.get(i)) {
                if (offSet == foundValid) {
                    return i;
                    /*itemUsed.set(i, true);
                    return items.get(i);*/
                }
                foundValid++;
            }
        }
        return -1;
    }
}
