public int IndexOfFirstDuplicate() { MemoryModuleState last = _states.Last(); int index = _states.FindIndex(s => s.Equals(last)); return(index); }
public void Reallocate() { MemoryBank largest = _memoryBanks.OrderByDescending(b => b.Blocks).First(); int blocksToSpread = largest.Blocks; largest.Blocks = 0; MemoryBank current = largest; for (int x = blocksToSpread; x > 0; x--) { current = current.Next; current.Blocks++; } // Save off current state MemoryModuleState currentState = new MemoryModuleState(_memoryBanks.Select(x => x.Blocks).ToList()); _states.Add(currentState); }