如何创建seq <seq <int * int >>值

时间:2019-04-22 08:34:26

标签: f#

假设有一个NxN board,我想创建一个seq<seq<int*int>>,其中包含板上的所有线。我不能使用可变变量。 例如,输入N为2,则输出为:

seq [seq[(0,0);(0,1)];seq[(1,0);(1,1)];seq[(0,0);
(1,0)];seq[(0,1);(1,1)];seq[(0,0);(1,1)];seq[(0,1);(1,0)]]

板上有6条线,包括水平线,垂直线和对角线。

let f (n:int) : seq<seq<int*int>> =    
    let seq1 = seq{ for x in 0 .. n-1 do yield 0,x}
    ...

我可以创建一行。我无法通过循环将所有行组合成seq []。

let loop = 
    for j in 0 .. n-1 do
        let seq1 (j:int) = seq{ for x in 0 .. n-1 do yield j,x}

我有一个想法,可以使用for循环来创建线条。但是我不知道如何存储seq1值并与新的seq1值组合。

1 个答案:

答案 0 :(得分:0)

有多种方法可以执行此操作,但是我喜欢seq构建器:

let positions = 
  seq {
    for x in 0..10 do
      for y in 0..10 do
        yield (x, y)
  }