组合列表的子列表的元素

时间:2018-11-19 02:38:56

标签: list functional-programming pattern-matching ocaml

我有以下子列表

[[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 :(得分:0)

在这里,您需要两次递归(因为您需要使用命令式语言的2个嵌入循环)。 第一次递归应该允许您遍历输入行,例如从1到3,并且在每次递归的每一步中,您将需要第二次递归来遍历整行。

您可以手动完成所有操作,也可以使用List.fold_left。 (我会使用fold进行内部递归。