Partition

From APL Wiki
Jump to navigation Jump to search

Partition (, ) is a dyadic function which splits its right argument into differently sized pieces as determined by the non-negative integer left argument. This article uses to distinguish Partition from Partitioned Enclose (which is always ), but the actual glyph used varies by dialect.

On a vector right argument, the arguments must have the same length with each element in the left argument corresponding to an element in the right argument. Partition begins a new division of its right argument whenever a left argument element is greater than its neighbour on the left (with a 0 assumed to the left of the first element):

Try it online!

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

Right argument elements can be skipped by having their corresponding left argument element be 0:

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

In the case where the left argument is Boolean, Partition splits its right argument on runs of 0s in the left argument, allowing a very short split-on-delimiter function:

Try it online!

      1 1 1 0 1 1 1 0 1 1 1 1'How are you?'
┌───┬───┬────┐
Howareyou?
└───┴───┴────┘
      ' '()'How are you?'
┌───┬───┬────┐
Howareyou?
└───┴───┴────┘
Works in: Dyalog APL

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 EachReverse ComposeReplicate
Quad names
Arrays Index originMigration level
Functions
Operators
Other ZildeHigh minusFunction axis