将一维数组写入二维数组

Igo*_*r S -2 c# arrays f#

让我们说我有一系列字符,我从控制台输入.如何以下列方式将它们写入二维数组:

1 6 11 16 21

2 7 12 17 22

3 8 13 18 23

4 9 14 19 24

5 10 15 20 25

或者使用列表会更好吗?

谢谢!

Tom*_*cek 5

假设您在长度为25的一维数组中输入:

let inputs = [| 1 .. 25 |]
Run Code Online (Sandbox Code Playgroud)

您可以使用以下Array2D.init函数创建一个二维数组,该数组将数据存储在5x5网格中:

let arr = Array2D.init 5 5 (fun i j -> inputs.[j*5 + i])
Run Code Online (Sandbox Code Playgroud)

该函数使用指定的大小(前两个参数)初始化数组,并调用提供的函数来填充数组中每个元素的值.通过访问索引处的元素j*5 + i,您可以获得样本中所需的结构.

编辑您不能向数组追加一行(数组具有固定大小),但您可以轻松地创建一个更大的数组并在那里复制数据:

let bigger = Array2D.zeroCreate 6 5
// Copy the whole contents of the original array
bigger.[0..4, 0..4] <- arr     
// Write new data to the last row
bigger.[5..5, 0..4] <- array2D [[5;10;15;20;25]]
Run Code Online (Sandbox Code Playgroud)