Simple examples: Difference between revisions

Jump to navigation Jump to search
832 bytes added ,  16:19, 20 November 2019
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]].
 
More involved examples include:
 
* [[APL Wiki logo]]
 
* [[Conway's Game of Life]]
 
* [[Error trapping with Dyalog APL]]
 
* [[Ranking poker hands]]


== 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│
│cow, sheep, cat, dog│
└────────────────────┘
└────────────────────┘
</source>
</source>
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 of its elements.
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
       {(+)÷≢ω} 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>/</source> can also be used to modify the <source lang=apl inline>(+⌿÷≢)</source> function to produce a moving average.
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 ← ave/
       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 programming language}}
 
=== 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}}

Navigation menu