Прямое Произведение | { 1 0 _ | Выбрать |
{y формирует прямое произведение всех атомов своего аргумента;
размерность производимого упаковочного массива
получается соединением размерностей распакованных
элементов y , а его распакованные элементы
имеют (одинаковую) размерность $y . Например:{ 'ht';'ao';'gtw' +---+---+---+ |hag|hat|haw| +---+---+---+ |hog|hot|how| +---+---+---+ +---+---+---+ |tag|tat|taw| +---+---+---+ |tog|tot|tow| +---+---+---+При помощи { можно легко определить Декартово произведение (Cartesian product): CP=: {@(,&<) 0 1 CP 2 3 4 +---+---+---+ |0 2|0 3|0 4| +---+---+---+ |1 2|1 3|1 4| +---+---+---+ |
Если x целое в диапазоне от -n=: #y
до n-1 , то x{y выбирает элемент n|x
из y . Тоесть:2 0 _1 _3 { 'abcdefg' cage t=:3 4$'abcdefghijkl' 1{t efghВ более общем случае, >x может быть (возможно упаковочным) списком, элементы которого являются массивами, указывающими на выборку вдоль последовательных измерений y . Наконец, если любой из r=:>j{>x все еще упакован, выборка производится по индексам (вдоль соответствующего измерения), которые отсутствуют в >r . Заметьте, что результатом последнего диадного примера, тоесть (<<<_1){m , является все кроме последнего элемента. |
t=: 3 4 $ 'abcdefghijkl' t; (1{t); (2 1{t); (1{"1 t); ((,1){"1 t); (2 1{"1 t) +----+----+----+---+-+--+ |abcd|efgh|ijkl|bfj|b|cb| |efgh| |efgh| |f|gf| |ijkl| | | |j|kj| +----+----+----+---+-+--+ t; (2 0{t); ((<2 0){t); ((2 0;1 3){t); ((<2 0;1 3){t) +----+----+-+--+--+ |abcd|ijkl|i|ih|jl| |efgh|abcd| | |bd| |ijkl| | | | | +----+----+-+--+--+ (_1{m); (_1{"2 m); (_1{"1 m); (<<<_1){m=:i.2 3 4 +-----------+-----------+--------+---------+ |12 13 14 15| 8 9 10 11| 3 7 11|0 1 2 3| |16 17 18 19|20 21 22 23|15 19 23|4 5 6 7| |20 21 22 23| | |8 9 10 11| +-----------+-----------+--------+---------+