Partitioned Enclose
Revision as of 12:00, 27 January 2020 by Adám Brudzewsky (talk | contribs)
Partitioned Enclose (⊂
) is a dyadic function which splits its right argument into differently sized pieces as determined by the non-negative integer[note 1] left argument.
On a vector right argument, the corresponding element in the left argument indicates how many[note 1] divisions to begin there:
1 0 1 0 0 0 0⊂'HiEarth' ┌──┬─────┐ │Hi│Earth│ └──┴─────┘
Works in: Dyalog APL
Empty divisions can be inserted by beginning more than 1 division at a particular index[note 2]:
2 0 3 0 0 0 0⊂'HiEarth' ┌┬──┬┬┬─────┐ ││Hi│││Earth│ └┴──┴┴┴─────┘
Additional trailing empty divisions are created by adding an additional division count corresponding to the index beyond the end of the right argument[note 2]:
1 0 1 0 0 0 0 1⊂'HiEarth' ┌──┬─────┬┐ │Hi│Earth││ └──┴─────┴┘
Partitioned Enclose allows a simple definition[note 3] of a split-into-lengths function:
Split←{⍵ ⊂⍨ ⍸⍣¯1 +\ ¯1↓1,⍺} 3 3 4 Split 'HowAreYou?' ┌───┬───┬────┐ │How│Are│You?│ └───┴───┴────┘
Works in: Extended Dyalog APL