当您有一个 n 数组时,您可以使用适当的等级访问每个嵌套“级别”。
名词的等级/形状
首先你有原子(等级0):
a =: 1
它们的形状 ( $a
) 是空的。
然后你有列表(排名 1),它们只是一些放在一起的原子:
b =: a,a,a
b =: 3 # a
b =: 3 $ a
它们的形状 ( $b
) 是列表的长度。
$b
3
然后,表格(排名 2):列表放在一起(缝合或其他):
c =: b,.b,.b
它们的形状是一个 2 项列表:行、列。
$c
3 3
然后,直到rank-n 数组(rank n)。
动词的等级
动词的等级是一个稍微不同的故事。这是动词将应用的等级。所以,当你用 box-0 ( <"0
) 一个名词时,你总是把这个名词的原子装箱,当你用 box-1 ( <"1
) 时,你总是把名词的列表装箱,等等。例如:
]n =: 2 3 4 $ i.24
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19
20 21 22 23
0级:
<"0 n
┌──┬──┬──┬──┐
│0 │1 │2 │3 │
├──┼──┼──┼──┤
│4 │5 │6 │7 │
├──┼──┼──┼──┤
│8 │9 │10│11│
└──┴──┴──┴──┘
┌──┬──┬──┬──┐
│12│13│14│15│
├──┼──┼──┼──┤
│16│17│18│19│
├──┼──┼──┼──┤
│20│21│22│23│
└──┴──┴──┴──┘
1级:
<"1 n
┌───────────┬───────────┬───────────┐
│0 1 2 3 │4 5 6 7 │8 9 10 11 │
├───────────┼───────────┼───────────┤
│12 13 14 15│16 17 18 19│20 21 22 23│
└───────────┴───────────┴───────────┘
2级:
<"2 n
┌─────────┬───────────┐
│0 1 2 3│12 13 14 15│
│4 5 6 7│16 17 18 19│
│8 9 10 11│20 21 22 23│
└─────────┴───────────┘
3级:
<"3 n
┌───────────┐
│ 0 1 2 3│
│ 4 5 6 7│
│ 8 9 10 11│
│ │
│12 13 14 15│
│16 17 18 19│
│20 21 22 23│
└───────────┘
在此示例中,高于 3 的等级与 3 相同。
您还可以使用负排名,顺便说一句,它从最高排名倒数。
您也可以混合排名。
求和
您现在可以看到,改变 的等级如何改变+/
求和的结果。例如,对+/"1
每个 rank-1 列表求和:
<"1 n
┌───────────┬───────────┬───────────┐
│0 1 2 3 │4 5 6 7 │8 9 10 11 │
├───────────┼───────────┼───────────┤
│12 13 14 15│16 17 18 19│20 21 22 23│
└───────────┴───────────┴───────────┘
+/"1 n
6 22 38
54 70 86
要对 rank-n 数组求和,您必须执行 n +/
s:
(+/^:3) n
276
+/+/+/ n
276
或者您可以在求和之前解开 ( ,
) 数组:
+/,n
276