>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

14. Разбиения

Функция sum=: +/ обрабатывает свой правый аргумент целиком и полностью. Для вычисления частичных сумм или под-сумм ее необходимо применить к каждому префиксу аргумента. Например:
   sum=: +/ 
   a=: 1 2 3 4 5 6
   (sum a) ; (sum\ a)
+--+--------------+
|21|1 3 6 10 15 21|
+--+--------------+
Символ \ обозначает наречие префиксно, применяющее свой аргумент (в данном случае sum) к каждому префиксу аргумента результирующего глагола. Наречие \. применяет глаголы подобным образом, но к суффиксам:
   sum\. a
21 20 18 15 11 6
Поскольку монада < просто упаковывает свои аргументы, глаголы <\ и <\. ясно показывают осуществляемые разбиения. Например:
   <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|
+-----------+---------+-------+-----+---+-+
Наречие диагонально /. разбивает таблицу на диагонали. Тоесть:
   </. 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|             |      |      |
+-------+-------------+------+------+

Упражнения

14.1   Подобно sum=:+/\ , определите программы, вычисляющие частичные произведения, частичные максимумы и частичные минимумы.

14.1   Поработайте со следующими программами и комментариями, как в Разделе 12 (тоесть используйте их для упражнений в чтении и письме). Поэкспериментируйте с выражениями c pol x , c pp d и (c pp d) pol x , используя c=:1 3 3 1 , d=:1 2 1 и x=:i.5 . См. словарь или Раздел 20 относительно использовании ранга:

pol=: +/@([*]^i.@#@[)"1 0  Многочлен
pp=: +//.@(*/)Произведение многочленов
pp11=: 1 1&pp Произведение многочлена на 1 1
pp11 d
pp11^:5 (1)
ps=: +/@,:Сумма многочленов




>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь