120
edits
Miraheze>Adám Brudzewsky No edit summary |
|||
(13 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
This page contains examples that show APL's strengths. The examples require minimal background and have no special dependencies. | This page contains examples that show APL's strengths. The examples require minimal background and have no special dependencies. If these examples are too simple for you, have a look at our [[advanced examples]]. | ||
== Arithmetic mean == | == Arithmetic mean == | ||
Line 38: | Line 28: | ||
will transform a list of strings representing words into a comma-separated list: | will transform a list of strings representing words into a comma-separated list: | ||
<source lang=apl> | <source lang=apl> | ||
{⍺,', ',⍵}⌿'cow' 'sheep' 'cat' 'dog' | |||
┌────────────────────┐ | ┌────────────────────┐ | ||
│cow, sheep, cat, dog│ | │cow, sheep, cat, dog│ | ||
└────────────────────┘ | └────────────────────┘ | ||
</source> | </source> | ||
So back to our mean example. <source lang=apl inline>(+ | So back to our mean example. <source lang=apl inline>(+⌿ω)</source> gives the sum of the list, which is then divided by <source lang=apl inline>≢ω</source>, the number elements in it. | ||
<source lang=apl> | <source lang=apl> | ||
{(+ | {(+⌿)÷≢ω} 3 4.5 7 21 | ||
8.875 | 8.875 | ||
</source> | </source> | ||
=== Tacit programming === | === Tacit programming === | ||
{{Main|Tacit}} | |||
In APL’s tacit definition, no braces are needed to mark the definition of a function: primitive functions just combine in a way that enables us to omit any reference to the function arguments — hence ''tacit''. Here is the same calculation written tacitly: | In APL’s tacit definition, no braces are needed to mark the definition of a function: primitive functions just combine in a way that enables us to omit any reference to the function arguments — hence ''tacit''. Here is the same calculation written tacitly: | ||
Line 57: | Line 49: | ||
</source> | </source> | ||
The operator <source lang=apl inline> | The operator <source lang=apl inline>⌿</source> can also be used to modify the <source lang=apl inline>(+⌿÷≢)</source> function to produce a moving average. | ||
<source lang=apl> | <source lang=apl> | ||
2 (+⌿÷≢)/ 3 4.5 7 21 | 2 (+⌿÷≢)/ 3 4.5 7 21 | ||
Line 67: | Line 59: | ||
ave 3 4.5 7 21 | ave 3 4.5 7 21 | ||
8.875 | 8.875 | ||
mave ← | mave ← ave⌿ | ||
2 mave 3 4.5 7 21 | 2 mave 3 4.5 7 21 | ||
3.75 5.75 14 | 3.75 5.75 14 | ||
Line 139: | Line 131: | ||
</source> | </source> | ||
{{Works in|all APLs}} | {{Works in|all APLs}} | ||
{{APL | |||
=== Grille cypher === | |||
A [[wikipedia:grille (cryptography)|grille]] is a 500 year old method for encrypting messages. | |||
[[File:Grille.png|none|500px|frameless|The application of a grille cypher]] | |||
<p> | |||
Represent both the grid of letters and the grille as character matrices. | |||
<source lang=apl> | |||
⎕←(grid grille)←5 5∘⍴¨'VRYIALCLQIFKNEVPLARKMPLFF' '⌺⌺⌺ ⌺ ⌺⌺⌺ ⌺ ⌺ ⌺⌺⌺ ⌺⌺⌺ ⌺⌺' | |||
┌─────┬─────┐ | |||
│VRYIA│⌺⌺⌺ ⌺│ | |||
│LCLQI│ ⌺⌺⌺ │ | |||
│FKNEV│⌺ ⌺ ⌺│ | |||
│PLARK│⌺⌺ ⌺⌺│ | |||
│MPLFF│⌺ ⌺⌺│ | |||
└─────┴─────┘ | |||
</source> | |||
</p> | |||
Retrieve elements of the grid where there are spaces in the grille. | |||
<source lang=apl> | |||
grid[⍸grille=' '] | |||
ILIKEAPL | |||
</source> | |||
An alternative method using [[ravel]]. | |||
<source lang=apl> | |||
(' '=,grille)/,grid | |||
ILIKEAPL | |||
</source> | |||
{{APL development}} |