Самый простой ответ на эту проблему — использовать диадический >.
(Больший из) . ..
0 >. y2
0 0 0
1 2 3
Если вы хотите использовать более общий условный критерий замены, то может оказаться полезной следующая форма:
(0 > y2)} y2 ,: 0
0 0 0
1 2 3
Если вы хотите использовать его как глагол, вы можете использовать форму герундия (v1`v2)} y ↔ (v1 y)} (v2 y)
:
(0 > ])`(0 ,:~ ])} y2
0 0 0
1 2 3
Если ваш вопрос больше касается замены индекса рассеяния, то это тоже возможно. Вам нужно получить 2D-индексы позиций, которые вы хотите заменить, например:
4 $. $. 0 > y2
0 0
0 1
0 2
Теперь упакуйте эти индексы и используйте диадический }
:
0 (<"1 (4 $. $. 0 > y2)) } y2
0 0 0
1 2 3
Опять же, вы можете превратить это в глагол, используя левый аргумент герундия для диадического }
(x (v0`v1`v2)} y ↔ (x v0 y) (x v1 y)} (x v2 y)
) следующим образом:
0 [`([: (<"1) 4 $. [: $. 0 > ])`]} y2
0 0 0
1 2 3
Or
100 101 102 [`([: (<"1) 4 $. [: $. 0 > ])`]} y2
100 101 102
1 2 3
Чтобы немного привести это в порядок, вы можете определить getIdx как отдельный глагол...
getIdx=: 4 $. $.
0 [`([: <"1@getIdx 0 > ])`]} y2
0 0 0
1 2 3
person
Tikkanz
schedule
17.02.2019