私は、(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
2つをまとめる:
(] <;.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コードの実装をお勧めします。
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