如何修改方框中的数据?(J)方案编制

如何修改方框中的数据?(J)方案编制,j,J,我有一个复杂的盒子 a =: 1 2 3 ; <4 ; < 5 6; <7 8 ┌─────┬─────────────┐ │1 2 3│┌─┬─────────┐│ │ ││4│┌───┬───┐││ │ ││ ││5 6│7 8│││ │ ││ │└───┴───┘││ │ │└─┴─────────┘│ └─────┴─────────────┘ 我的问题是,如何编写一个函数(动词)来修改给定地址的数据? e、 g.地址(11 0)已知,

我有一个复杂的盒子

a =: 1 2 3 ; <4 ; < 5 6; <7 8
┌─────┬─────────────┐
│1 2 3│┌─┬─────────┐│
│     ││4│┌───┬───┐││
│     ││ ││5 6│7 8│││
│     ││ │└───┴───┘││
│     │└─┴─────────┘│
└─────┴─────────────┘
我的问题是,如何编写一个函数(动词)来修改给定地址的数据?
e、 g.地址(11 0)已知,我想将值(5 6)更改为一个小框(您可以使用一元原语(
{:
)确定要替换/修改的项的地址(
1;1;0
):

不幸的是,目前没有一个与(
}
)等价的
,尽管在解释器中有一个实现原语
}:
的方法,该原语具有您想要的功能

在我们等待实现该原语的同时,通过J编程论坛存档进行的搜索显示,建议使用以下递归副词来实现您的要求:

store=: adverb define
:
  if. #m do. (< x (}.u)store ({.u){::y) ({.m)} y else. x end.
)

   (<123) (1;1;0) store a
┌─────┬───────────────┐
│1 2 3│┌─┬───────────┐│
│     ││4│┌─────┬───┐││
│     ││ ││┌───┐│7 8│││
│     ││ │││123││   │││
│     ││ ││└───┘│   │││
│     ││ │└─────┴───┘││
│     │└─┴───────────┘│
└─────┴───────────────┘
store=:副词define
:
if.#mdo。(┌─────┬───────────────┐
│1 2 3│┌─┬───────────┐│
│     ││4│┌─────┬───┐││
│     ││ ││┌───┐│7 8│││
│     ││ │││123││   │││
│     ││ ││└───┘│   │││
│     ││ │└─────┴───┘││
│     │└─┴───────────┘│
└─────┴───────────────┘
   a=: 1 2 3;<4;<5 6;7 8
   {:: a
┌───┬─────────────────────────┐
│┌─┐│┌─────┬─────────────────┐│
││0│││┌─┬─┐│┌───────┬───────┐││
│└─┘│││1│0│││┌─┬─┬─┐│┌─┬─┬─┐│││
│   ││└─┴─┘│││1│1│0│││1│1│1││││
│   ││     ││└─┴─┴─┘│└─┴─┴─┘│││
│   ││     │└───────┴───────┘││
│   │└─────┴─────────────────┘│
└───┴─────────────────────────┘
   (1;1;0) {:: a
5 6
store=: adverb define
:
  if. #m do. (< x (}.u)store ({.u){::y) ({.m)} y else. x end.
)

   (<123) (1;1;0) store a
┌─────┬───────────────┐
│1 2 3│┌─┬───────────┐│
│     ││4│┌─────┬───┐││
│     ││ ││┌───┐│7 8│││
│     ││ │││123││   │││
│     ││ ││└───┘│   │││
│     ││ │└─────┴───┘││
│     │└─┴───────────┘│
└─────┴───────────────┘
   (<123) [ applyintree (1;1;0) a
┌─────┬───────────────┐
│1 2 3│┌─┬───────────┐│
│     ││4│┌─────┬───┐││
│     ││ ││┌───┐│7 8│││
│     ││ │││123││   │││
│     ││ ││└───┘│   │││
│     ││ │└─────┴───┘││
│     │└─┴───────────┘│
└─────┴───────────────┘