【发布时间】:2018-11-11 00:50:02
【问题描述】:
我有这个矩阵:
let arr = Array.make_matrix 4 4 0;;
以及检查所有元素是否为 0。
我听说过 for_all 函数,但我不太清楚如何将它与矩阵一起使用,因为它需要一个 int 数组或一个 int 列表。
【问题讨论】:
我有这个矩阵:
let arr = Array.make_matrix 4 4 0;;
以及检查所有元素是否为 0。
我听说过 for_all 函数,但我不太清楚如何将它与矩阵一起使用,因为它需要一个 int 数组或一个 int 列表。
【问题讨论】:
根据文档 (https://caml.inria.fr/pub/docs/manual-ocaml/libref/Array.html),以下是您需要了解的所有内容:
val for_all : ('a -> bool) -> 'a array -> bool
Array.for_all p [|a1; ...; an|] 检查数组的所有元素是否满足谓词p。也就是说,它返回(p a1) && (p a2) && ... && (p an)。
示例:Array.for_all ((=) 0) 的类型为 int array -> bool,并检查所有元素是否为零。
【讨论】:
矩阵是一个数组数组(如果您愿意,也可以是一个行数组)。因此,您需要在每一行上执行for_all 以检查该行的所有元素是否为零,以及另一个外部for_all 以检查行上的所有for_alls 是否为真:
let arr = Array.make_matrix 4 4 0 in
Array.for_all (fun row ->
Array.for_all ((=) 0) row) arr
【讨论】: