Partition

From APL Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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'
┌──┬─────┐
│Hi│Earth│
└──┴─────┘
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'
┌──┬───┐
│Hi│Ear│
└──┴───┘
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?'
┌───┬───┬────┐
│How│are│you?│
└───┴───┴────┘
      ' '(≠⊆⊢)'How are you?'
┌───┬───┬────┐
│How│are│you?│
└───┴───┴────┘
Works in: Dyalog APL

See also

External links

Tutorials

Documentation

APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)
Quad names Index originComparison toleranceMigration levelAtomic vector