我同意/.
( Key ) 是将动词应用于 J 中的组的最佳通用方法。在这种情况下,我们需要对相同的连续数字进行分组的另一种方法是二元法;.
(Cut):
1 1 0 0 1 0 1 <(;.1) 3 1 1 1 2 2 3
┌─┬─────┬───┬─┐
│3│1 1 1│2 2│3│
└─┴─────┴───┴─┘
我们可以形成品格用作左参数,如下所示:
1 , 2 ~:/\ 3 1 1 1 2 2 3 NB. inserts ~: in the running sets of 2 numbers
1 1 0 0 1 0 1
将两者放在一起:
(] <;.1~ 1 , 2 ~:/\ ]) 3 1 1 1 2 2 3
┌─┬─────┬───┬─┐
│3│1 1 1│2 2│3│
└─┴─────┴───┴─┘
使用与之前建议的相同机制:
,@(] (# , {.);.1~ 1 , 2 ~:/\ ]) 3 1 1 1 2 2 3
1 3 3 1 2 2 1 3
如果您正在寻找外观和说序列的一个很好的 J 实现,那么我建议您使用 Rosetta Code 上的那个:
las=: ,@((# , {.);.1~ 1 , 2 ~:/\ ])&.(10x&#.inv)@]^:(1+i.@[)
5 las 1 NB. left arg is sequence length, right arg is starting number
11 21 1211 111221 312211