如何在 jq 中生成笛卡尔方块?
How to produce cartesian square in jq?
如何在 jq
中生成数组的笛卡尔平方?
输入:
[0,1,2]
输出:
[[0,0],[0,1],[0,2],
[1,0],[1,1],[1,2],
[2,0],[2,1],[2,2]]
我找到了使它适用于算术运算的简单方法,但用逗号运算符就不行了。
笛卡尔积
按指定顺序生成对数组的一种方法如下:
def data: [0,1,2];
data | [.[] as $i | .[] as $j | [$i, $j] ]
或者,避免 $-变量:
[range(0;3) | [.] + (range(0;3)|[.])]
m[i][j] = [i,j]
的方阵
def Mij(n):
[ range(0;n) as $i
| [ range(0;n) as $j
| [$i, $j] ] ];
Mij(3)
产生:
[[[0,0],[0,1],[0,2]],[[1,0],[1,1],[1,2]],[[2,0],[2,1],[2,2]]]
如何在 jq
中生成数组的笛卡尔平方?
输入:
[0,1,2]
输出:
[[0,0],[0,1],[0,2],
[1,0],[1,1],[1,2],
[2,0],[2,1],[2,2]]
我找到了使它适用于算术运算的简单方法,但用逗号运算符就不行了。
笛卡尔积
按指定顺序生成对数组的一种方法如下:
def data: [0,1,2];
data | [.[] as $i | .[] as $j | [$i, $j] ]
或者,避免 $-变量:
[range(0;3) | [.] + (range(0;3)|[.])]
m[i][j] = [i,j]
的方阵def Mij(n):
[ range(0;n) as $i
| [ range(0;n) as $j
| [$i, $j] ] ];
Mij(3)
产生:
[[[0,0],[0,1],[0,2]],[[1,0],[1,1],[1,2]],[[2,0],[2,1],[2,2]]]