【问题标题】:What is the correct approach to efficiently perform a scanl in APL?在 APL 中有效执行扫描的正确方法是什么?
【发布时间】:2023-03-05 09:24:01
【问题描述】:

从我的previous question 看来,APL 似乎在 O(n^2) 中执行了一次扫描,但编译器足够聪明,可以针对简单的原语进行优化。那么将\ 应用于非简单函数的最佳策略是什么?此外,在很多情况下,右关联性确实会影响结果,例如:

{0⌈⍺+⍵} \ 3 ¯4 1 5 ¯1 ¯2 ¯3 2 0 4           ⍝ 3 0 3 5 4 5 5 5 5 5

这不是我所期望的答案3 0 1 6 5 3 0 2 2 6

【问题讨论】:

  • 您可能想要说明您期望的结果。 3 0 1 6 5 3 0 2 2 6?

标签: operator-precedence apl dyalog


【解决方案1】:

我偶然发现了一种可能的解决方案,但不知道它是否是最惯用的。

s←0 ⋄ ↑{s⊢←0⌈s+⍵}¨ 3 ¯4 1 5 ¯1 ¯2 ¯3 2 0 4

正确地给我3 0 1 6 5 3 0 2 2 6

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2020-06-28
    • 2012-02-25
    • 1970-01-01
    • 2021-09-12
    • 2021-08-23
    相关资源
    最近更新 更多