Результат: ученик работает с прямоугольными массивами рангов 2–4, выводит границы каждой оси, проектирует отображения координат и доказывает полноту сложных порядков обхода.

Содержание:

  1. Понять ранг и форму массива

    • T[,], T[,,] и T[,,,];
    • Rank как число измерений;
    • GetLength(d) как длина конкретной оси;
    • Length как общее число элементов;
    • произведение длин измерений;
    • нулевые измерения и пустые области.
  2. Создавать и инициализировать прямоугольные области

    • создание по заданной форме;
    • значения элементов по умолчанию;
    • инициализатор двумерного массива;
    • отдельная координата для каждой оси;
    • отсутствие внутреннего массива строк в T[,].
  3. Строить базовые обходы

    • построчный порядок;
    • столбцовый порядок;
    • foreach как линейное чтение всех элементов;
    • согласование вложенных циклов с измерениями;
    • инвариант полностью обработанных строк, столбцов или слоёв.
  4. Обрабатывать геометрические области

    • строки и столбцы;
    • главная и побочная диагонали;
    • рамка;
    • верхний и нижний треугольники;
    • прямоугольный поддиапазон;
    • разделение области на непересекающиеся части.
  5. Преобразовывать координаты двумерной таблицы

    • транспонирование;
    • горизонтальное и вертикальное отражение;
    • поворот на 90°, 180° и 270°;
    • форма результирующего массива;
    • доказательство допустимости и взаимной однозначности координат.
  6. Сворачивать и восстанавливать координаты

    • линейная позиция для двумерного массива;
    • обратное деление на длину последней оси;
    • обобщение на ранги 3 и 4;
    • порядок осей;
    • проверка взаимной обратимости;
    • риск переполнения произведений размеров.
  7. Получать срезы и проекции

    • слой трёхмерного массива;
    • строка или столбец выбранного слоя;
    • двумерный срез массива большего ранга;
    • агрегирование вдоль оси;
    • создание независимого результата и сохранение исходной формы.
  8. Переставлять оси

    • описание соответствия старых и новых измерений;
    • вычисление формы результата;
    • перестановка координат;
    • проверка обратной перестановкой;
    • отличие перестановки осей от изменения порядка обхода.
  9. Реализовывать матричные и локальные алгоритмы

    • умножение совместимых матриц;
    • согласование внутреннего измерения;
    • сумма произведений;
    • окрестность ячейки;
    • проверка границ соседей;
    • обновление в новый буфер при одновременном преобразовании.
  10. Строить сложные порядки посещения

    • змейка;
    • диагонали;
    • спираль;
    • слои рамок;
    • доказательство посещения каждой ячейки ровно один раз;
    • отсутствие повторов на вырожденных формах.
  11. Работать с запросами к области

    • двумерные префиксные суммы;
    • сумма произвольного прямоугольника за O(1) после подготовки;
    • цена дополнительной памяти;
    • седловые точки;
    • лестничный поиск в монотонной таблице за O(m + n).
  12. Оценивать стоимость координатного алгоритма

    • O(mn) для полного обхода;
    • O(mnk) для матричного умножения общей формы;
    • O(m + n) для лестничного поиска;
    • подготовка против стоимости повторного запроса;
    • влияние формы, а не только общего Length.