PARTS

partition functions

Partitions are typically given by a boolean with 1's marking
the beginning or end of each partition. Partitions are also
sometimes given in terms of the lengths of each partition.

Verbs defined here assume that boolean 1's mark the beginning
of each partition - see comments at the end for examples of
end-partition verbs.

The verbs psum and psumscan illustrate definitions appropriate
for verbs that return scalar or non-scalar results, respectively.
utility used to build non-scalar partition functions:

e.g.
  1 0 0 1 0 0 0 = firstones 1 1 0 1 1 1 0
  0 0 1 0 1 = lastones 1 1 1 0 1
  2 3 1 = lfp 1 0 1 0 0 1
  1 1 0 1 0 0 1 = partition 1 9 9 4 4 4 9
  0 0 0 1 2 2 3 = runindices 3 1 2 1
  1 2 3 1 = runlengths 1 9 9 4 4 4 9

x=. 1 0 1 0 0 [ y=. 5 3 2 2 7
  3 5 7 2 2 = x preverse y
  3 5 2 2 7 = x psort y
  8 11 = x psum y
  5 8 2 4 11 = x psumscan y

Defined items
NameClassDescription
firstonesVerbfirst 1's in partition
lastonesVerblast 1's in partition
lfpVerblengths from partition
partitionVerbpartition items (1 marks new item)
pflVerbpartition from lengths
runindicesVerbindices from run lengths
runlengthsVerblengths of each run
preverseVerbpartioned reverse
psortVerbpartioned sort
psumVerbpartioned sum
psumscanVerbpartioned sumscan

firstones........... (v) first 1's in partition

form: firstones part

lastones............ (v) last 1's in partition

form: lastones part

lfp................. (v) lengths from partition

form: lfp part

partition........... (v) partition items (1 marks new item)

form: partition dat

pfl................. (v) partition from lengths

form: pfl len

runindices.......... (v) indices from run lengths

form: runindices

runlengths.......... (v) lengths of each run

form: runlengths dat

preverse............ (v) partioned reverse

form: part preverse dat

psort............... (v) partioned sort

form: part psort dat

psum................ (v) partioned sum

form: part psum dat

psumscan............ (v) partioned sumscan

form: part psumscan dat

system\main\parts.ijsRelease: 4.02/1998-11-13/12:26