[英]Write 4 : 'x&{.&.;: y' tacitly
Conor Hoekstra 最近在 APL https://youtu.be/QtvvQ7MdwKY中解决了一个 Leetcode 问题,问题是从字符串y
中取出前x
单词
在 J 中,使用&.
(Under) and ;:
(Words) 我可以想出一个很好的明确的单线
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'
有一个相当默契的解决方案吗?
使用半对偶(由 J902 或 J903 引入?)您可以编写4 {.&.(a:`;:) s
。 然后;:
仅适用于正确的参数,而稍后仍会进行相反的操作。 u&.(f`a:)
将f
仅应用于左侧参数。
主要是因为我认为
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
是默认的动词。
我不认为你可以把它写成一个默认动词,但它很容易作为一个默认副词: ]:&{.&.;:
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.