Scan: Difference between revisions
Jump to navigation
Jump to search
(→Documentation: BQN) |
m (Text replacement - "<source" to "<syntaxhighlight") |
||
Line 5: | Line 5: | ||
== Examples == | == Examples == | ||
< | <syntaxhighlight lang=apl> | ||
+\⍳5 ⍝ plus-scan over range of integers from 1 to 5 | +\⍳5 ⍝ plus-scan over range of integers from 1 to 5 | ||
1 3 6 10 15 | 1 3 6 10 15 | ||
Line 12: | Line 12: | ||
== Applications == | == Applications == | ||
Removing disconnected trailing 1s from a [[boolean]] mask: | Removing disconnected trailing 1s from a [[boolean]] mask: | ||
< | <syntaxhighlight lang=apl> | ||
mask←1 1 1 1 0 1 1 0 0 1 | mask←1 1 1 1 0 1 1 0 0 1 | ||
mask | mask |
Revision as of 20:56, 10 September 2022
\ ⍀
|
Scan (\
, ⍀
) is a primitive monadic operator which takes a dyadic function operand and produces a monadic function which is equivalent to the reductions of the prefixes of the arguments. This operation is known as also known as cumulative reduction.
Explanation
Scan is similar to Reduce, however all the intermediate results will be retained. That being said, unlike Reduce, Scan does not reduce the rank of its argument, i.e. performing a scan over an N-dimensional array will produce an N-dimensional array.
Examples
<syntaxhighlight lang=apl>
+\⍳5 ⍝ plus-scan over range of integers from 1 to 5
1 3 6 10 15 </source>
Applications
Removing disconnected trailing 1s from a boolean mask: <syntaxhighlight lang=apl>
mask←1 1 1 1 0 1 1 0 0 1 mask
1 1 1 1 0 1 1 0 0 1
∧\mask ⍝ and-scan mask
1 1 1 1 0 0 0 0 0 0 </source>
External links
Lessons
Documentation