如何修改方框中的数据?(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││ │││
│ ││ ││└───┘│ │││
│ ││ │└─────┴───┘││
│ │└─┴───────────┘│
└─────┴───────────────┘