首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写4:‘X&{.&;;:y’默许

问写4:‘X&{.&;;:y’默许
EN

Stack Overflow用户
提问于 2021-04-06 05:56:55
回答 3查看 254关注 0票数 4

Conor最近解决了APL https://youtu.be/QtvvQ7MdwKY中的一个Leetcode问题,问题是从字符串y中提取第一个x单词。

在J中,使用&. (下面)和;: (Word),我可以想出一个很好的显式一行

代码语言:javascript
复制
solve =. 4 : 'x&{.&.;: y'         NB. Box words in y -> take first x-> unbox words in result while retaining spaces between
   s=. 'Hello how are you Contestant'
   4 solve s
Hello how are you

我遇到的麻烦是找到仍然包含&.的默认版本,主要是因为我认为在创建动词时,x需要绑定到{.。这也是一个神奇的13 :转换没有帮助的例子。

代码语言:javascript
复制
   13 : 'x&{.&.;: y'
4 : 'x&{.&.;: y'

我可以通过使用;:^:_1来创建;:的逆值来默认地解决这个问题。

代码语言:javascript
复制
   solve2=. (;:^:_1)@:({. ;:)
   4 solve2 s
Hello how are you

但这并不像默认版本的4 : 'x&{.&.;: y'那样漂亮。

任何人都有一个相当默契的4 : 'x&{.&.;: y'解决方案

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-06 06:24:20

主要是因为我认为在创建动词的过程中,x需要绑定到{.。

如果用输入来创建动词是关键,你不应该用副词吗?

代码语言:javascript
复制
   solve =: 1 : 'm&{.&.;:'
   4 solve
4&{.&.;:
   (4 solve ,: 2 solve) 'Hello how are you Contestant'
Hello how are you
Hello how        

solve本身不是默契(或动词),但4 solve是默示动词。

票数 3
EN

Stack Overflow用户

发布于 2021-04-06 20:50:42

与半对点 (与J902或J903?)你可以写4 {.&.(a:`;:) s。然后,;:只应用于正确的参数,而稍后仍然执行逆操作。u&.(f`a:)只对左参数应用f。

票数 8
EN

Stack Overflow用户

发布于 2022-05-27 17:14:00

我不认为你能把它写成一个隐性动词,但作为一个默示副词:]:&{.&.;:很容易做到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66963366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档