【问题标题】:Permuting Matrices in OcamlOcaml 中的置换矩阵
【发布时间】:2020-04-12 15:50:13
【问题描述】:

所以,我必须做这个任务

permute: 'a list list -> int list -> int list -> '一个列表列表 =

将表示为列表列表的 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】:

    (你不能在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 函数应用于结果。

    【讨论】:

      猜你喜欢
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多