Я предполагаю, что ваше матричное представление представляет собой список списков. Во многих случаях наилучшим представлением будет массив массивов или двумерный большой массив, но они не дают реальной возможности сопоставления с шаблоном.
Итак, скажем, m
- это список списков,Первым списком транспонирования будет список первых элементов всех списков в m. Вы могли бы начать с написания функции, которая берет список списков и возвращает список, состоящий из первых элементов каждого из списков:
first_elems [[1; 2]; [3; 4]] => [1; 3]
Чтобы рекурсия работала хорошо, вам может понадобиться другая аналогичная функция, котораявозвращает все элементы, кроме первого:
rest_elems [[1; 2]; [3; 4]] => [[2]; [4]]
Обратите внимание, что если вы примените first_elems
к этому результату, вы получите второй список транспонирования.
Если вы можете написать эти (несколько) более простые функции, вы, вероятно, можете объединить их для создания полной транспонирования.