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