45
edits
Line 112: | Line 112: | ||
</source> | </source> | ||
{{Works in|[[Dyalog APL]], [[NARS2000]], [[dzaima/APL]]}} | {{Works in|[[Dyalog APL]], [[NARS2000]], [[dzaima/APL]]}} | ||
=== Frequency of characters in a string === | |||
The [[Outer Product]] allows for an intuitive way to compute the occurrence of characters at a given location in a string: | |||
<source lang=apl> | |||
'abcd' ∘.= 'cabbage' | |||
0 1 0 0 1 0 0 | |||
0 0 1 1 0 0 0 | |||
1 0 0 0 0 0 0 | |||
0 0 0 0 0 0 0 | |||
</source> | |||
Then it is simply a matter of performing a sum-reduce <source lang=apl inline>+/</source> to calculate the total frequency of each character:<ref name="Marshall LambaConf 2019">Marshall Lochbaum used this example as part of his talk on [[Outer Product]] at LambdaConf 2019.</ref> | |||
<source lang=apl> | |||
+/ 'abcd' ∘.= 'cabbage' | |||
2 2 1 0 | |||
</source> | |||
=== Parenthesis nesting level === | === Parenthesis nesting level === | ||
First we compare all characters to the opening and closing characters; | We can expand on the use of <source lang=apl inline>∘.</source> in the above example to perform more complex calculations. First we compare all characters to the opening and closing characters; | ||
<source lang=apl> | <source lang=apl> | ||
'()'∘.='plus(square(a),plus(square(b),times(2,plus(a,b)))' | '()'∘.='plus(square(a),plus(square(b),times(2,plus(a,b)))' | ||
Line 159: | Line 174: | ||
</source> | </source> | ||
<references/> | |||
{{APL development}} | {{APL development}} |
edits