Как транспонировать матрицу в Ocaml - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь транспонировать матрицу, используя сопоставление с образцом в Ocaml, я не могу использовать какие-либо модули или функции карты, какие-либо советы о том, как подойти к этому?

1 Ответ

0 голосов
/ 24 октября 2019

Я предполагаю, что ваше матричное представление представляет собой список списков. Во многих случаях наилучшим представлением будет массив массивов или двумерный большой массив, но они не дают реальной возможности сопоставления с шаблоном.

Итак, скажем, m - это список списков,Первым списком транспонирования будет список первых элементов всех списков в m. Вы могли бы начать с написания функции, которая берет список списков и возвращает список, состоящий из первых элементов каждого из списков:

first_elems [[1; 2]; [3; 4]] =>  [1; 3]

Чтобы рекурсия работала хорошо, вам может понадобиться другая аналогичная функция, котораявозвращает все элементы, кроме первого:

rest_elems [[1; 2]; [3; 4]] => [[2]; [4]]

Обратите внимание, что если вы примените first_elems к этому результату, вы получите второй список транспонирования.

Если вы можете написать эти (несколько) более простые функции, вы, вероятно, можете объединить их для создания полной транспонирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...