在论文“数组语言中的组合逻辑和组合器”中,他们给出了 APL 中的解决方案:
\n vec \xe2\x86\x90 1 1 0 1 1 1 0 0 0 1\n \xe2\x8d\x9d split (partition) on zeroes\n \xe2\x8a\x86\xe2\x8d\xa8vec\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\xac\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x821 1\xe2\x94\x821 1 1\xe2\x94\x821\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\xb4\xe2\x94\x80\xe2\x94\x98\n \xe2\x8d\x9d size of each sublist\n \xe2\x89\xa2 \xcc\x88\xe2\x8a\x86\xe2\x8d\xa8vec\n2 3 1\n \xe2\x8d\x9d max reduction\n \xe2\x8c\x88/\xe2\x89\xa2\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8vec\n3\nRun Code Online (Sandbox Code Playgroud)\n为了清楚起见,他们还指出:
\n\n\n对于那些不读 APL 的人来说,可以翻译最终的最大连续数 APL 解决方案:\n
\nreduce(max, map(length, W(partition, vec)))
那么,如何用 J 表达以下内容呢?
\n \xe2\x8c\x88/\xe2\x89\xa2\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8vec\nRun Code Online (Sandbox Code Playgroud)\n该\xe2\x8a\x86符号似乎是一个“分区”运算符。目前尚不清楚 J 中是否存在这种情况,但我可能只是错过了它。很好奇上面的表达式在“J”中会是什么。
丹·布朗在评论中的回答是肯定的选择。我制作了一个关于这个问题的视频,如果您有兴趣,可以观看我介绍不同的选项。https://www.youtube.com/watch?v=lbi_PMVbeaQ 我最终喜欢的版本是
t=:[: >./ [: #;. _2 ,&0
但我也看看
t=:[: {: [: $ [: ];. _2 ,&0
作为备选。