Самый простой ответ для этой проблемы - использовать двоичную >.
( Больше ) ...
0 >. y2
0 0 0
1 2 3
Если вы хотите использовать более общие критерии условной замены,тогда может пригодиться следующая форма:
(0 > y2)} y2 ,: 0
0 0 0
1 2 3
Если вы хотите использовать ее как глагол, вы можете использовать форму gerund (v1`v2)} y ↔ (v1 y)} (v2 y)
:
(0 > ])`(0 ,:~ ])} y2
0 0 0
1 2 3
Если ваш вопрос больше касается замены индекса разброса, то это тоже возможно.Вам нужно получить двумерные индексы позиций, которые вы хотите заменить, например:
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
или
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