Результат: ученик работает с прямоугольными массивами рангов 2–4, выводит границы каждой оси, проектирует отображения координат и доказывает полноту сложных порядков обхода.
Содержание:
-
Понять ранг и форму массива
T[,],T[,,]иT[,,,];Rankкак число измерений;GetLength(d)как длина конкретной оси;Lengthкак общее число элементов;- произведение длин измерений;
- нулевые измерения и пустые области.
-
Создавать и инициализировать прямоугольные области
- создание по заданной форме;
- значения элементов по умолчанию;
- инициализатор двумерного массива;
- отдельная координата для каждой оси;
- отсутствие внутреннего массива строк в
T[,].
-
Строить базовые обходы
- построчный порядок;
- столбцовый порядок;
foreachкак линейное чтение всех элементов;- согласование вложенных циклов с измерениями;
- инвариант полностью обработанных строк, столбцов или слоёв.
-
Обрабатывать геометрические области
- строки и столбцы;
- главная и побочная диагонали;
- рамка;
- верхний и нижний треугольники;
- прямоугольный поддиапазон;
- разделение области на непересекающиеся части.
-
Преобразовывать координаты двумерной таблицы
- транспонирование;
- горизонтальное и вертикальное отражение;
- поворот на
90°,180°и270°; - форма результирующего массива;
- доказательство допустимости и взаимной однозначности координат.
-
Сворачивать и восстанавливать координаты
- линейная позиция для двумерного массива;
- обратное деление на длину последней оси;
- обобщение на ранги 3 и 4;
- порядок осей;
- проверка взаимной обратимости;
- риск переполнения произведений размеров.
-
Получать срезы и проекции
- слой трёхмерного массива;
- строка или столбец выбранного слоя;
- двумерный срез массива большего ранга;
- агрегирование вдоль оси;
- создание независимого результата и сохранение исходной формы.
-
Переставлять оси
- описание соответствия старых и новых измерений;
- вычисление формы результата;
- перестановка координат;
- проверка обратной перестановкой;
- отличие перестановки осей от изменения порядка обхода.
-
Реализовывать матричные и локальные алгоритмы
- умножение совместимых матриц;
- согласование внутреннего измерения;
- сумма произведений;
- окрестность ячейки;
- проверка границ соседей;
- обновление в новый буфер при одновременном преобразовании.
-
Строить сложные порядки посещения
- змейка;
- диагонали;
- спираль;
- слои рамок;
- доказательство посещения каждой ячейки ровно один раз;
- отсутствие повторов на вырожденных формах.
-
Работать с запросами к области
- двумерные префиксные суммы;
- сумма произвольного прямоугольника за
O(1)после подготовки; - цена дополнительной памяти;
- седловые точки;
- лестничный поиск в монотонной таблице за
O(m + n).
-
Оценивать стоимость координатного алгоритма
O(mn)для полного обхода;O(mnk)для матричного умножения общей формы;O(m + n)для лестничного поиска;- подготовка против стоимости повторного запроса;
- влияние формы, а не только общего
Length.

