Объединение элементов подсписка списка - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть следующий список подсписков

[[1;5;10];
 [2;6;11];
 [3;7;12]];

Я пытаюсь создать следующий список подсписков:

[[1;2;3];
 [5;6;7];
 [10;11;12]]

Первый подсписок результата должен содержать первый элемент каждого исходного подсписка, второй подсписок результата должен содержать вторые элементы каждого из исходных подсписков и т. Д.

Каждый подсписок содержит то же количество элементов, что и остальные подсписки. Количество подсписков не менее 2.

Я думал об использовании List.map, но я не уверен, какую функцию применять к каждому подсписку, чтобы извлечь необходимые элементы.

Это то, что я имею до сих пор:

let rec compute list = 
   List.map (fun x -> ) list

Любые предложения приветствуются!

1 Ответ

0 голосов
/ 19 ноября 2018

Здесь вам нужно две рекурсии (так как вам понадобится 2 замкнутых цикла на императивном языке).Первая рекурсия должна позволить вам пройти через строку ввода, скажем, от 1 до 3, и на каждом этапе этой рекурсии вам понадобится вторая рекурсия, чтобы пройти полный ряд.

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

...