Partitioned Enclose

From APL Wiki
Jump to navigation Jump to search

Partitioned Enclose () is a dyadic function which splits its right argument into differently sized pieces as determined by the left argument.

In the simplest case, and on a vector right argument, the corresponding element in the left argument indicates where divisions begin:

      1 0 1 0 0 0 0'HiEarth'
┌──┬─────┐
HiEarth
└──┴─────┘
Works in: Dyalog APL

Almost all dialects restrict the left argument to provide only this functionality. However, the left argument can be interpreted as a count of how many partitions begin with a particular position:

      2 0 3 0 0 0 0'HiEarth'
┌┬──┬┬┬─────┐
││Hi│││Earth
└┴──┴┴┴─────┘

Additional trailing empty divisions are thus created by adding an additional division count corresponding to the position beyond the end of the right argument:

      1 0 1 0 0 0 0 1'HiEarth'
┌──┬─────┬┐
HiEarth││
└──┴─────┴┘

This interpretation allows a simple definition of a split-into-lengths function:

Try it online!

      Split{  ¯1 +\ ¯11,}
      3 3 4 Split 'HowAreYou?'
┌───┬───┬────┐
HowAreYou?
└───┴───┴────┘

External links

Tutorials

Documentation

APL built-ins [edit]
Primitive functions
Scalar
Monadic ConjugateNegateSignumNotRollType
Dyadic AddSubtractEqual to (Xnor) ∙ Not Equal to (Xor) ∙ MinimumMaximumComparison functions
Non-Scalar
Structural ShapeReshapeTallyDepthRavelReverseRazeMixCut (K)PairReplicatePartitioned Enclose
Selection TakeDropUniqueIdentitySelect
Selector Interval IndexIndices
Computational MatchNot MatchNub SieveFormatExecute
Primitive operators Monadic EachReplicate
Dyadic Reverse Compose
Quad names
Arrays Index originMigration level
Functions
Operators
Other ZildeHigh minusFunction axis