【发布时间】:2015-03-29 17:16:54
【问题描述】:
我正在尝试在 OCaml 中将一维数组转换为二维数组。
在测试我写的函数时:
# to_array2d [|1;2;3;1;2;4;1;2;5|];;
我得到这个错误的结果:
int array array = [|[|1; 2; 5|]; [|1; 2; 5|]; [|1; 2; 5|]|]
正确的结果应该是:
int array array = [|[|1; 2; 3|]; [|1; 2; 4|]; [|1; 2; 5|]|]
代码如下:
let to_array2d (array1d: int array) : int array array =
let dim = int_of_float (sqrt (float (Array.length array1d))) in
let array2d = Array.make dim (Array.make dim 0 ) in
for i = 0 to (dim - 1) do
for j = 0 to (dim - 1) do
array2d.(i).(j) <- (Array.get array1d (i * dim + j))
done
done;
array2d
;;
我做错了什么?
【问题讨论】:
-
嗨,Thomas,如果您明确写出您期望的输出,也许您的问题会更容易阅读。此外,也许您可以在代码之前移动输入、预期输出和实际输出,这可能是一个更好的标语。 :)
标签: ocaml