>> << 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