Skip to content

Partitioned Enclose (⎕ML<3) R←X⊂[K]Y

Y may be any array. X must be a simple integer scalar or vector. If X is a scalar it is extended to (≢Y)⍴X.

The axis specification is optional. If present, it must be a simple integer scalar or one-element vector. The value of K must be an axis of Y. If absent, the last axis of Y is implied.

R is a vector of items selected from Y by inserting 0 or more dividers, specified by X, between its major cells.

Each element of X specifies the number of dividers to insert before the corresponding major cell of Y. The maximum length of X is 1+≢Y, when the last element of X specifies the number of trailing dividers. Note that major cells of Y that precede the first divider (identified by the first non-zero element of X) are excluded from the result.

The length of R is +/X (after possible extension).

Examples

      0 0 1 0 0 1 0'abcdefg'
┌───┬──┐
cdefg
└───┴──┘
      2 0 1 3 0 2 0 1'abcdefg'
┌┬──┬─┬┬┬──┬┬──┬┐
││abc│││de││fg││
└┴──┴─┴┴┴──┴┴──┴┘
      0 2 0 1'abcdefg'
┌┬──┬────┐
││bcdefg
└┴──┴────┘

The above examples may be explained pictorially by the diagram below.

partitioned enclose
Figure 1: partitioned enclose

Further Examples

      1 0 1[1]3 4⍴⍳12
┌───────┬──────────┐
1 2 3 49 10 11 12
5 6 7 8          
└───────┴──────────┘
      1 0 0 1[2]3 4⍴⍳12
┌───────┬──┐
1  2  3 4
5  6  7 8
9 10 1112
└───────┴──┘