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

11. Классификация (Множества и Утверждения)

Выражение -.+./t , в применении к любой таблице классификации t , дает таблицу полной классификации. Таким образом, функция, определенная ниже, замыкает таблицу классификации. Функция tab гарантирует, что скалярный или векторный аргумент будет воспринят как таблица с одной строкой.
   c=: complete=: (] , (+./ {. ,:)@:-.@:(+./))@:tab
   tab=: ,:^:(0:>.2:-#@$)

   c 0 0 1,:0 1 0
0 0 1
0 1 0
1 0 0

   c 1 0 1,:0 1 0
1 0 1
0 1 0

   (c 1 0 1);(c c 1 0 1);(c 0);(c 1)
+-----+-----+-+-+
|1 0 1|1 0 1|0|1|
|0 1 0|0 1 0|1| |
+-----+-----+-+-+
Функция, возвращающая булевский список называется утверждением; ее результат есть одно-направленная классификация, называемая множеством. Классификация, конечно, может быть замкнута добавлением дополнительного множества в качестве отдельного класса. Например:
   p1=: 2&<: *. <&5           Множество, определенное интервалом
   p1a=: (2:<:]) *. (]<5:)    Альтернативное определение
   p2=: = <.                  Множество целых
   a=: 2 %~ i. 11
   (],p1,p1a,p2,(p1+.p2),:(p1*.p2)) a
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0   0 0   0 1   1 1   1 1   1 0
0   0 0   0 1   1 1   1 1   1 0
1   0 1   0 1   0 1   0 1   0 1
1   0 1   0 1   1 1   1 1   1 1
0   0 0   0 1   0 1   0 1   0 0


   list=: 1 : 'x # ]'         Наречие для перечисления элементов множества

   ((p1 list);(p2 list);((p1*.p2)list)) a
+-----------------+-----------+-----+
|2 2.5 3 3.5 4 4.5|0 1 2 3 4 5|2 3 4|
+-----------------+-----------+-----+



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