如何屏蔽 APL 中的扫描操作符?

maz*_*zin 4 apl dyalog

假设我有一个数组N \xe2\x86\x90 0 0 0 1 1 1 0 0 1,我如何应用扫描\\来实现数组0 0 0 1 2 3 0 0 1

\n

+\\N给了我0 0 0 1 2 3 3 3 4这不是我想要的。

\n

+\\\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8N给我| 1 2 3 | 1 |哪个更接近,但随后我失去了位置。

\n

有没有办法在扫描和乘法中携带原始值,或者也许有更好的方法?

\n

rak*_*507 5

这里有几个选项。使用 \\ 可以轻松调整您最初的想法。

\n

或者,对于一个简短的(但效率低下的 O(n^2))解决方案,\xe2\x8a\xa5\xe2\x8d\xa8\xc2\xa8,\\可行。

\n

为了更有效但更长的解决方案,我改编了https://aplcart.info/?q=cumulative%20sum#

\n

可能还有更好的东西,但我太糟糕了,找不到它,但它留给读者作为练习;)

\n
      f \xe2\x86\x90 {\xe2\x8d\xb5\\\xe2\x88\x8a+\\\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8\xe2\x8d\xb5}\n      g \xe2\x86\x90 \xe2\x8a\xa5\xe2\x8d\xa8\xc2\xa8,\\\n      h \xe2\x86\x90 {+\\\xe2\x8d\xb5-a\\\xc2\xaf2-/0,(a\xe2\x86\x901,2\xe2\x89\xa0/\xe2\x8d\xb5)/+\\\xc2\xaf1\xe2\x86\x930,\xe2\x8d\xb5}\n      f 0 0 0 1 1 1 0 0 1\n0 0 0 1 2 3 0 0 1\n\n      r \xe2\x86\x90 ? 1e3 \xe2\x8d\xb4 2        \xe2\x8d\x9d random boolean array\n      (\xe2\x88\xa7/2\xe2\x89\xa1/f,\xe2\x8d\xa5\xe2\x8a\x86g,\xe2\x8d\xa5\xe2\x8a\x86h)r   \xe2\x8d\x9d they\'re all the same\n1\n      \n      ]runtime -c \'f r\' \'g r\' \'h r\'\n                                                                \n  f r \xe2\x86\x92 3.6E\xc2\xaf5 |    0% \xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95                      \n  g r \xe2\x86\x92 7.7E\xc2\xaf5 | +111% \xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95 \n  h r \xe2\x86\x92 7.3E\xc2\xaf6 |  -80% \xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95                                     \n
Run Code Online (Sandbox Code Playgroud)\n

  • 顺便说一句,如果您不了解的话,聊天室 https://chat.stackexchange.com/rooms/52405/the-apl-orchard/ (或 apl.chat)对于提问也很有用:) (2认同)

Mor*_*erg 5

怎么样m\xe2\x86\x90{s-\xe2\x8c\x88\\(s\xe2\x86\x90+\\\xe2\x8d\xb5)\xc3\x972>/0,\xe2\x8d\xb5},看起来快两倍?

\n
      cmpx  'h r' 'm r'\n  h r \xe2\x86\x92 1.1E\xc2\xaf5 |   0% \xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\n  m r \xe2\x86\x92 4.2E\xc2\xaf6 | -63% \xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95\xe2\x8e\x95 \n
Run Code Online (Sandbox Code Playgroud)\n