gpt4 book ai didi

apl - 如何屏蔽 APL 中的扫描运算符?

转载 作者:行者123 更新时间:2023-12-04 11:58:20 25 4
gpt4 key购买 nike

假设我有一个数组 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 |这更接近,但随后我失去了位置。
有没有办法在扫描和乘法中携带原始值,或者更好的方法?

最佳答案

这里有几个选项。可以使用\轻松调整您的原始想法。
或者,对于较短(但效率低下的 O(n^2))解决方案,⊥⍨¨,\作品。
为了获得更高效但更长的解决方案,我改编了 https://aplcart.info/?q=cumulative%20sum#
可能还有更好的东西,但我找不到它太糟糕了,但它留给读者作为练习;)

      f ← {⍵\∊+\¨⊆⍨⍵}
g ← ⊥⍨¨,\
h ← {+\⍵-a\¯2-/0,(a←1,2≠/⍵)/+\¯1↓0,⍵}
f 0 0 0 1 1 1 0 0 1
0 0 0 1 2 3 0 0 1

r ← ? 1e3 ⍴ 2 ⍝ random boolean array
(∧/2≡/f,⍥⊆g,⍥⊆h)r ⍝ they're all the same
1

]runtime -c 'f r' 'g r' 'h r'

f r → 3.6E¯5 | 0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
g r → 7.7E¯5 | +111% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
h r → 7.3E¯6 | -80% ⎕⎕⎕⎕

关于apl - 如何屏蔽 APL 中的扫描运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69220358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com