public int NumberOfStepsUntilDuplicateState(int[] initialBlocks) { MemoryModule memoryModule = new MemoryModule(initialBlocks); int steps = 0; bool noDuplicateState = true; while (noDuplicateState) { steps++; memoryModule.Reallocate(); noDuplicateState = memoryModule.NoDuplicateState(); } return(steps); }
public int NumberOfStepsBetweenFirstDuplicate(int[] initialBlocks) { MemoryModule memoryModule = new MemoryModule(initialBlocks); int steps = 0; bool noDuplicateState = true; while (noDuplicateState) { steps++; memoryModule.Reallocate(); noDuplicateState = memoryModule.NoDuplicateState(); } int stepOfFirstDuplicate = memoryModule.IndexOfFirstDuplicate(); return(steps - (stepOfFirstDuplicate + 1)); }