apl - 如何在 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 |
更近的位置,但后来我失去了位置。
有没有办法在扫描和乘法中携带原始值,或者可能是更好的方法?
解决方案
怎么样m←{s-⌈\(s←+\⍵)×2>/0,⍵}
,似乎快两倍?
cmpx 'h r' 'm r'
h r → 1.1E¯5 | 0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
m r → 4.2E¯6 | -63% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
推荐阅读
- java - 如何在没有参数的情况下对特定行的 ArrayList 进行排序,以区分该特定元素中的第一个条目和第二个条目?
- python - 在列的行中选择有限的值
- javascript - 向页面添加漂亮的滚动条
- c - 如何在使用泛型指针时增加多个数据类型
- go - 不允许分配相同的类型
- ios - 具有两个视图的 SwiftUI Card Flip 动画,其中一个嵌入在 Stack 中
- php - 使用 laravel eloquent 仅向用户显示他尚未购买的产品
- python - 使用 Python 从文本中删除坏词
- jquery - 在 jquery 对象变量中为 `:checked` 添加规则
- java - Whitelabel 错误页面 Swagger,此应用程序没有 /error 的显式映射,因此您将其视为后备 swagger2:3.0.0-SNAPSHOT