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

20. Ранг

Размерность ($), количество элементов (#) и ранг (#@$) легко проиллюстрировать на примере существительного report (его можно, например, считать отчетом, покрывающим два года, состоящие из четырех кварталов, по три месяца в каждом):
   ]report=: i. 2 4 3
 0  1  2
 3  4  5
 6  7  8
 9 10 11

12 13 14
15 16 17
18 19 20
21 22 23

   ($ ; # ; #@$) report        Размерность, число элементов, ранг
+-----+-+-+
|2 4 3|2|3|
+-----+-+-+
Последние k измерений составляют k-ячейку существительного; 0-ячейками существительного report являются атомы (например: 4 и 14), 1-ячейками являются трех-элементные квартальные отчеты, а 2-ячейками (главными ячейками или элементами) два годовых отчета размерности четыре на три.

Союз с рангом " используется в выражении f"k для применения функции f к каждой из k-ячеек аргумента. Например:
   ,report
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

   ,"2 report
 0  1  2  3  4  5  6  7  8  9 10 11
12 13 14 15 16 17 18 19 20 21 22 23

   <@i. s=: 2 5 
+---------+ 
|0 1 2 3 4|
|5 6 7 8 9|
+---------+
   <@i."0 s
+---+---------+
|0 1|0 1 2 3 4|
+---+---------+
Для диад можно указать левый и правый ранги. Тоесть:
   10 11 12 (,"0 1 ; ,"1 1 ; ,"1) 0 1 2
+--------+--------------+--------------+
|10 0 1 2|10 11 12 0 1 2|10 11 12 0 1 2|
|11 0 1 2|              |              |
|12 0 1 2|              |              |
+--------+--------------+--------------+
Наречие свойства b. очень полезно для анализа функций (или выражений их определяющих) на предмет ранга. Например:
   (# b. 0) ; (+/\ b. 0) ; (+/\ % #) b. 0
+-----+-----+-----+
|_ 1 _|_ 0 _|_ _ _|
+-----+-----+-----+

Упражнения

20.1   Посмотрите на результаты следующих монад, произведенных союзом с рангом, и прокомментируйте их:
a=: i. 3 4 5
<"0 a
<"1 a
<"2 a
<"3 a
< a
<"_1 a
<"_2 a
mean=: +/ % #
mean a
mean"1 a
mean"2 a
Ответ: <"k применяет < к каждой ячейке ранга k , причем <"(#$a) a эквивалентно <a . Отрицательное значение k обозначает дополнительный ранг, соответствующий обычному рангу в виде разности ранга аргумента a и |k .

20.2   Установите связь между союзами @ (Поверх) и @: (Над) при помощи следующих экспериментов; сравните свои выводы с определениями в словаре:
(g=: <"2) a=: i. 3 4 5
|. @: g a
|. @ g a
|: @: (<"1) a
|: @ (<"1) a
Ответ: Функция |. @: g имеет бесконечный ранг, а значит |. применяется к результату g целиком, меняя порядок элементов в нем. С другой стороны, функция f @ g наследует ранг g , а значит |. в ней применяется индивидуально к каждому атому результата g , не производя никакого эффекта.

20.3   Проведите следующие эксперименты и прокомментируйте использование союза с рангом к диадам:
b=: 'ABC'
c=: 3 5 $ 'abcdefghijklmno'
c
b,c
b ,"0 1 c
b ,"1 1 c
b ,"1 c



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