首页 > 解决方案 > 如何在 APL 中屏蔽扫描运算符?

问题描述

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

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

+\¨⊆⍨N给了我| 1 2 3 | 1 |更近的位置,但后来我失去了位置。

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

标签: apldyalog

解决方案


怎么样m←{s-⌈\(s←+\⍵)×2>/0,⍵},似乎快两倍?

      cmpx  'h r' 'm r'
  h r → 1.1E¯5 |   0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
  m r → 4.2E¯6 | -63% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ 

推荐阅读