Ejemplo n.º 1
0
        static public int[] GetEndingIndex(this IArrayDefinition array)
        {
            var indexes = new int[array.Rank];

            array.GetEndingIndex(indexes);
            return(indexes);
        }
Ejemplo n.º 2
0
        static public bool IndexesIntersects(this IArrayDefinition first, IArrayDefinition second, out IArrayDefinition intersection)
        {
            int[] minimums = first.GetStartingIndex().Zip(second.GetStartingIndex(), Math.Max).ToArray();
            int[] maximums = first.GetEndingIndex().Zip(second.GetEndingIndex(), Math.Min).ToArray();

            if (Enumerable.Range(0, first.Rank).Any(x => minimums[x] > maximums[x]))
            {
                intersection = new IndexRange();
                return(false);
            }

            intersection = new IndexRange(minimums, maximums.Zip(minimums, (x, y) => x - y + 1).ToArray());
            return(true);
        }