Intro 14. Partitions

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Dictionary

14. Partitions
The function`sum=: +/` applies to an entire list argument; to compute partial sums or subtotals, it is necessary to apply it to each prefix of the argument. For example:

       sum=: +/
       a=: 1 2 3 4 5 6
       (sum a) ; (sum\ a)
    +--+--------------+
    |21|1 3 6 10 15 21|
    +--+--------------+

The symbol`\` denotes the prefix adverb, which applies its argument (in this case`sum`)`` to each prefix of the eventual argument. The adverb`\.` applies similarly to suffixes:

       sum\. a
    21 20 18 15 11 6

The monad`<` simply boxes its arguments, and the verbs`<\` and`<\.` therefore show the effects of partitions with great clarity. For example:

       <1 2 3
    +-----+
    |1 2 3|
    +-----+

       (<1),(<1 2),(<1 2 3)
    +-+---+-----+
    |1|1 2|1 2 3|
    +-+---+-----+

       <\ a
    +-+---+-----+-------+---------+-----------+
    |1|1 2|1 2 3|1 2 3 4|1 2 3 4 5|1 2 3 4 5 6|
    +-+---+-----+-------+---------+-----------+

       <\. a
    +-----------+---------+-------+-----+---+-+
    |1 2 3 4 5 6|2 3 4 5 6|3 4 5 6|4 5 6|5 6|6|
    +-----------+---------+-------+-----+---+-+

The oblique adverb`/.` partitions a table along diagonal lines. Thus:

       </. t=: 1 2 1 */ 1 3 3 1
    +-+---+-----+-----+---+-+
    |1|3 2|3 6 1|1 6 3|2 3|1|
    +-+---+-----+-----+---+-+

       t ; (sum/. t) ; (10 #. sum/. t) ; (121*1331)
    +-------+-------------+------+------+
    |1 3 3 1|1 5 10 10 5 1|161051|161051|
    |2 6 6 2|             |      |      |
    |1 3 3 1|             |      |      |
    +-------+-------------+------+------+

Exercises

14.1 | Define programs analogous to`sum=:+/\` for progressive products, progressive maxima, and progressive minima.
14.1 | Treat the following programs and comments like those of Section 12, that is, as exercises in reading and writing. Experiment with expressions such as`c pol x` and`c pp d` and`(c pp d) pol x` with`c=:1 3 3 1` and`d=:1 2 1` and`x=:i.5` .`` See the dictionary or Section 20 for the use of rank:
`pol=: +/@([*]^i.@#@[)"1 0` | Polynomial
`pp=: +//.@(*/)` | Polynomial product
`pp11=: 1 1&pp` | Polynomial product by`1 1`
`pp11 d`
`pp11^:5 (1)`
`ps=: +/@,:` | Polynomial sum

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Dictionary