我有一个复杂的盒子,
a =: 1 2 3 ; <4 ; < 5 6; <7 8
?????????????????????
?1 2 3???????????????
? ??4????????????
? ?? ??5 6?7 8???
? ?? ????????????
? ???????????????
?????????????????????
Run Code Online (Sandbox Code Playgroud)
假设我知道内盒[5 6]的地址是(1 1 0),即可以像这样提取数据:
>0{>1{>1{a
5 6
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何编写一个函数(动词)来修改给定地址的数据?例如地址(1 1 0)是已知的,我想将值(5 6)更改为一个小方框(<123),输出应为:
???????????????????????
?1 2 3?????????????????
? ??4??????????????
? ?? ????????7 8???
? ?? ???123?? ???
? ?? ???????? ???
? ?? ??????????????
? ?????????????????
???????????????????????
Run Code Online (Sandbox Code Playgroud)
它可以通过递归函数来实现,但我想知道地址是否可以直接应用,就像> 0 {> 1 {> 1 {a.
谢谢您的帮助!
您可以使用单子原始映射( 1;1;0
) 确定要替换/修改的项目的地址( ):{::
a=: 1 2 3;<4;<5 6;7 8\n {:: a\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\n\xe2\x94\x82\xe2\x94\x820\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x82\xe2\x94\x821\xe2\x94\x820\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x82\xe2\x94\x821\xe2\x94\x821\xe2\x94\x820\xe2\x94\x82\xe2\x94\x82\xe2\x94\x821\xe2\x94\x821\xe2\x94\x821\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n\n{::
的二元形式fetch将从嵌套结构中返回项目。
(1;1;0) {:: a\n5 6\n
Run Code Online (Sandbox Code Playgroud)\n\n不幸的是,尽管最近有一个请求在解释器中实现具有您想要的功能的原语,但目前还没有}::
与amend ( ) 等效的方法。}
}::
当我们等待该原语实现时,通过搜索 J 编程论坛档案发现了一篇帖子,其中建议使用以下递归副词来完成您所要求的操作:
\n\nstore=: adverb define\n:\n if. #m do. (< x (}.u)store ({.u){::y) ({.m)} y else. x end.\n)\n\n (<123) (1;1;0) store a\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x821 2 3\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x824\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x827 8\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x82123\xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n\n我看到您的问题在 J 论坛上也有人提出并得到解答。为了完整起见,我添加了指向该更通用解决方案的链接。
\n\n (<123) [ applyintree (1;1;0) a\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x821 2 3\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x824\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2\x94\x827 8\xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x82123\xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x82\xe2\x94\x94\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
103 次 |
最近记录: |