Ejemplo n.º 1
0
        static public TwoDimensionIndexSequenceCollection ToSequences <T>(this IEnumerable <int[]> indexes, IArrayDefinition array)
        {
            var sequences = new List <TwoDimensionIndexSequence>();
            int sequenceI = 0;
            int sequenceJ = 0;
            int length    = 0;

            int[] predictedIndex = null;
            foreach (int[] index in indexes)
            {
                if (predictedIndex != null && !predictedIndex.Equals(index))
                {
                    sequences.Add(new TwoDimensionIndexSequence(sequenceI, sequenceJ, length));
                    length = 0;
                }

                if (length == 0)
                {
                    sequenceI = index[0];
                    sequenceJ = index[1];
                }

                length++;

                if (predictedIndex == null)
                {
                    predictedIndex = new int[2];
                }

                Array.Copy(index, predictedIndex, index.Length);
                array.MoveIndex(predictedIndex, 0);
            }

            return(new TwoDimensionIndexSequenceCollection(sequences));
        }
Ejemplo n.º 2
0
 public bool MoveNext() => _array.MoveIndex(Current);