Ocaml中的置换矩阵

问题描述 投票:0回答:1

所以,我必须执行此任务

permute:‘列表列表->整数列表->整数列表->‘列表清单=

将表示为列表列表的n×n平方矩阵作为第一个参数并以整数列表给定的顺序返回具有行的矩阵作为第二个参数和列按整数列表给出的顺序作为第三个参数。第二个和第三个参数分别表示前n个数字。

示例:置换[[1; 2; 3]; [4; 5; 6]; [7; 8; 9]] [2; 3; 1] [1; 3; 2];-:int = [[4; 6; 5]; [7; 9; 8]; [1; 3; 2]]

到目前为止,我的代码是这样的:

let fun a i =
let elem id = List.nth a (id-1) in
List.map elem i 

这是一个列表,但我需要它作为列表的列表。任何帮助,将不胜感激。

matrix ocaml permutation
1个回答
0
投票

((在OCaml中没有名为fun的函数。fun是所谓的保留字。我将其重命名为perm。]

您的函数具有此类型:

val perm : 'a list -> int list -> 'a list = <fun>

换句话说,它完全适用于任何列表。这包括一个列表列表。

例如:

# perm [1;2;3;4] [4;3;2;1];;
- : int list = [4; 3; 2; 1]
# perm [[1;1]; [2;2]; [3;3]; [4;4]] [4;3;2;1];;
- : int list list = [[4; 4]; [3; 3]; [2; 2]; [1; 1]]

因此,提示是将此perm函数映射到初始列表上,然后将该perm函数再次应用于结果。

© www.soinside.com 2019 - 2024. All rights reserved.