Conor最近解决了APL https://youtu.be/QtvvQ7MdwKY中的一个Leetcode问题,问题是从字符串y中提取第一个x单词。
在J中,使用&. (下面)和;: (Word),我可以想出一个很好的显式一行
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 :转换没有帮助的例子。
13 : 'x&{.&.;: y'
4 : 'x&{.&.;: y'我可以通过使用;:^:_1来创建;:的逆值来默认地解决这个问题。
solve2=. (;:^:_1)@:({. ;:)
4 solve2 s
Hello how are you但这并不像默认版本的4 : 'x&{.&.;: y'那样漂亮。
任何人都有一个相当默契的4 : 'x&{.&.;: y'解决方案
发布于 2021-04-06 06:24:20
主要是因为我认为在创建动词的过程中,
x需要绑定到{.。
如果用输入来创建动词是关键,你不应该用副词吗?
solve =: 1 : 'm&{.&.;:'
4 solve
4&{.&.;:
(4 solve ,: 2 solve) 'Hello how are you Contestant'
Hello how are you
Hello how solve本身不是默契(或动词),但4 solve是默示动词。
发布于 2021-04-06 20:50:42
与半对点 (与J902或J903?)你可以写4 {.&.(a:`;:) s。然后,;:只应用于正确的参数,而稍后仍然执行逆操作。u&.(f`a:)只对左参数应用f。
发布于 2022-05-27 17:14:00
我不认为你能把它写成一个隐性动词,但作为一个默示副词:]:&{.&.;:很容易做到。
https://stackoverflow.com/questions/66963366
复制相似问题