在Q / kdb中,您可以使用表示每个优先级的':
轻松修改动词。它将动词应用于元素及其先前的邻居。例如
=':
检查值对是否相等。在J中,您可以轻松折叠/\
但它是累积的,是否有成对的形式?
[\
具有dyadic valence以选择特定长度的列表,其行为取决于正负长度:
2]\i.4
0 1
1 2
2 3
3]\i.4
0 1 2
1 2 3
_2]\i.4
0 1
2 3
_3]\i.4
0 1 2
3 0 0
因此用于比较对:
n=:1 2 2 2 3 3 1
2]\n
1 2
2 2
2 2
2 3
3 3
3 1
=/"(1) 2]\n
0 1 1 0 1 0
_2]\n
1 2
2 2
3 3
1 0
=/"(1) _2]\n
0 1 1 0
注意最后一对,您也可以旋转列表:
n ,: n
1 2 2 2 3 3 1
1 2 2 2 3 3 1
(] ,: 1&|.) n
1 2 2 2 3 3 1
2 2 2 3 3 1 1
=/(] ,: 1&|.) n
0 1 1 0 1 0 1
如果您特别想让每个项目与其上一个邻居:
2|.\1 2 3 4
2 1
3 2
4 3
还有cut的'subarrays'用法:
2 <;.3 n
┌───┬───┬───┬───┬───┬───┬─┐
│1 2│2 2│2 2│2 3│3 3│3 1│1│
└───┴───┴───┴───┴───┴───┴─┘
2 <;._3 n
┌───┬───┬───┬───┬───┬───┐
│1 2│2 2│2 2│2 3│3 3│3 1│
└───┴───┴───┴───┴───┴───┘
2 =/;._3 n
0 1 1 0 1 0