默写4:'x&{.&.;:y'
Conor Hoekstra 最近解决了 APL 中的一个 Leetcode 问题https://youtu.be/QtvvQ7MdwKY问题是x从字符串中取出第一个单词y
在 J 中,使用&.(Under) 和;:(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仅适用于左参数。