Результат: ученик создаёт и анализирует массивы массивов, различает отсутствующие, пустые и общие строки, выбирает между прямоугольной и зубчатой формой и проектирует обратимые преобразования с достаточными метаданными.
Содержание:
-
Понять двухуровневое устройство
- внешний массив ссылок;
- отдельное создание каждой внутренней строки;
- собственная длина строки;
- возможность
null, пустой и непустой строки; - тип
T[][]и nullable-формаT[]?[].
-
Строить защищённый вложенный обход
- проверка существования строки;
- получение границы только из текущей строки;
- различие внешнего и внутреннего индекса;
- агрегаты по строкам и всей структуре;
- логические столбцы с различным числом участников.
-
Прослеживать псевдонимы строк
- две внешние позиции, ссылающиеся на один массив;
- изменение общего объекта;
- замена одной внешней ссылки;
- перестановка строк без копирования элементов;
ReferenceEqualsи граф объектов.
-
Различать модели копирования
- поверхностная копия внешнего массива;
- независимая копия каждой позиции;
- структурная глубокая копия с сохранением внутренней топологии псевдонимов;
- копирование
nullи пустых строк; - контракт обработки по позиции и по уникальному объекту.
-
Выбирать между
T[,]иT[][]- гарантированная прямоугольная форма;
- нерегулярное число элементов;
- число внутренних объектов и ссылок;
- необходимые проверки;
- число реально хранимых элементных позиций;
- операции, удобные или неудобные для каждой формы.
-
Преобразовывать прямоугольную и зубчатую формы
- прямоугольная таблица в массив строк;
- проверка одинаковой длины при обратном преобразовании;
- удаление заполнителя из префиксной модели;
- маска присутствия, если заполнитель может совпадать с реальным значением;
- отдельная метаинформация для
nullи пустой строки.
-
Сворачивать нерегулярную структуру
- общий массив
values; - массив смещений
offsets; - полуинтервал элементов каждой строки;
- неубывающие смещения;
- поиск строки по глобальной позиции через
UpperBound; - восстановление длин.
- общий массив
-
Проектировать достаточные метаданные
wasNullдля различения отсутствующей и пустой строки;representativeдля восстановления общей строки;- проверка согласованности длин и смещений;
- уровни информации: значения, форма, отсутствие и топология;
- полный круг кодирования и декодирования.
-
Транспонировать нерегулярную форму
- компактное транспонирование с удалением пропусков;
- сохраняющее пропуски представление через nullable-элементы;
- длина каждой строки результата;
- обратимость и потеря информации;
- две различные формы с одинаковым компактным результатом.
-
Использовать специализированные нерегулярные модели
- треугольник Паскаля;
- нижний треугольник симметричной матрицы;
- группы переменного размера;
- нерегулярные скалярные произведения;
- перестановка строк по циклам.
-
Сравнивать форму, содержимое и топологию
- одинаковые состояния
nullи длины; - поэлементное равенство;
- одинаковый рисунок разделения внутренних объектов;
- различные отношения равенства для одной пары структур;
- необходимость явно назвать требуемое свойство.
- одинаковые состояния
-
Оценивать цену представления
- число элементных ячеек;
- число массивов и ссылок;
- дополнительные метаданные;
- стоимость линейного поиска уникальных объектов без коллекций;
- невозможность объявить форму автоматически более быстрой без измерения.

