2016-07-26 16 views
2

2D配列を作成するための簡略な方法はありますか?2D配列を作成するための略記法はありますか?

私は実際に次のことを行うにはしたくない:

let board = array2D [| 
         [| 0;0 |] 
         [| 0;1 |] 
         [| 0;2 |] 
         [| 0;3 |] 
         [| 0;4 |] 
         [| 0;5 |] 
         [| 0;6 |] 
         [| 0;7 |] 
         [| 1;0 |] 
         [| 1;1 |] 
         [| 1;2 |] 
         ... 
         [| 7;7 |] 
        |] 

私はこのような何かできると思っていた:

let board = array2D [| 
         [| 0;0 |]..[|7;7|] 
        |] 

またはこの:

let board = array2D [| 
         [| 0.., 0..7 |] 
        |] 

任意の指導を?

+1

が何をしたいの間で間違いないですあなたが書いたことは?ここでボードは、64行と2列の2D配列です。 8x8グリッドにすることをお勧めしますか? – Sehnsucht

+1

@Sehnsucht:私はそれがほとんどの人が望んでいると思うので、私の答えです。しかし、彼は64x2グリッド(正確な答えが提供されている)が必要な場合があります。 –

答えて

6

は、たぶん、あなたが必要とするものの理解です:

array2D [for i in 0..7 do for j in 0..7 do yield [|i;j|] ] 

これは、あなたが欲しいために何をしたいように思われるものを返します。

val it : int [,] = [[0; 0] 
        [0; 1] 
        [0; 2] 
        [0; 3] 
        [0; 4] 
        [0; 5] 
        [0; 6] 
        [0; 7] 
        [1; 0] 
        [1; 1] 
        [1; 2] 
        [1; 3] 
        [1; 4] 
        [1; 5] 
        [1; 6] 
        [1; 7] 
        [2; 0] 
        [2; 1] 
        [2; 2] 
        [2; 3] 
        [2; 4] 
        [2; 5] 
        [2; 6] 
        [2; 7] 
        [3; 0] 
        [3; 1] 
        [3; 2] 
        [3; 3] 
        [3; 4] 
        [3; 5] 
        [3; 6] 
        [3; 7] 
        [4; 0] 
        [4; 1] 
        [4; 2] 
        [4; 3] 
        [4; 4] 
        [4; 5] 
        [4; 6] 
        [4; 7] 
        [5; 0] 
        [5; 1] 
        [5; 2] 
        [5; 3] 
        [5; 4] 
        [5; 5] 
        [5; 6] 
        [5; 7] 
        [6; 0] 
        [6; 1] 
        [6; 2] 
        [6; 3] 
        [6; 4] 
        [6; 5] 
        [6; 6] 
        [6; 7] 
        [7; 0] 
        [7; 1] 
        [7; 2] 
        [7; 3] 
        [7; 4] 
        [7; 5] 
        [7; 6] 
        [7; 7]] 
6

Ringilの答えがより正確です(あなたが求めたものに対して)。しかし、あなたがわずかに異なるアレイ状で別の方法を探している場合は、次の操作を行うことができます。

あなたはArray2D.initを使用することができます。

> let board = Array2D.init 8 8 (fun x y -> (x,y));; 

val board : (int * int) [,] = 
    [[(0, 0); (0, 1); (0, 2); (0, 3); (0, 4); (0, 5); (0, 6); (0, 7)] 
    [(1, 0); (1, 1); (1, 2); (1, 3); (1, 4); (1, 5); (1, 6); (1, 7)] 
    [(2, 0); (2, 1); (2, 2); (2, 3); (2, 4); (2, 5); (2, 6); (2, 7)] 
    [(3, 0); (3, 1); (3, 2); (3, 3); (3, 4); (3, 5); (3, 6); (3, 7)] 
    [(4, 0); (4, 1); (4, 2); (4, 3); (4, 4); (4, 5); (4, 6); (4, 7)] 
    [(5, 0); (5, 1); (5, 2); (5, 3); (5, 4); (5, 5); (5, 6); (5, 7)] 
    [(6, 0); (6, 1); (6, 2); (6, 3); (6, 4); (6, 5); (6, 6); (6, 7)] 
    [(7, 0); (7, 1); (7, 2); (7, 3); (7, 4); (7, 5); (7, 6); (7, 7)]] 

誰でも重宝した場合に、私はここにこれを残しておきますこのデータの形状は多くの場合意味があると思います。

関連する問題