Conway's Game of Life

Conway's Game of Life is a well-known cellular automaton in which each generation of a population "evolves" from the previous one according to a set of predefined rules. The Game of Life is defined on an infinite Boolean grid, but usually only finite patterns, where all 1 values fit in a finite Boolean matrix, are studied. Because it involves interactions between adjacent elements of the matrix, and can take advantage of APL's convenient and fast Boolean handling, implementing the Game of Life is a popular activity for APLers. APL implementations have appeared in the APL Quote-Quad since 1971, a year after the rules of the Game of Life were first published. More recently, it is sometimes seen as a use case for the Stencil operator, which provides a concise way to work on three-by-three neighborhoods as used by the Game of Life.

A famous video by John Scholes explains the following Dyalog APL implementation step by step. The implementation takes advantage of nested arrays and the Outer Product to produce many copies of the argument array. It finds adjacent elements by rotating the original array, causing elements at the edge to wrap around (giving a torus geometry). This implementation is also explained in its own article.

Historical implementations
First published in October 1970 by Martin Gardner in Scientific American, Conway's Game of Life quickly became a popular target of APL implementation. Jean Jacques Duby's 7-line interactive implementation appeared in APL Quote Quad exactly a year later, and was followed by a 9-line implementation in February 1972 and both a 6-line and a 4-line implementation in June 1972.

A survey of previous APL implementations along with two new 23-token implementations was given by Eugene McDonnell in "Life: Nasty, Brutish, and Short", published in the APL88 conference proceedings. McDonnell also described how future language features, such as the Commute operator and a tesselation operator related to Cut and the much later Stencil, might reduce this to as few as 11 tokens (one of which is a long list of integers), or to 9 tokens when using a pre-defined vector of matrices.

John Scholes published a video in which he explains his own implementation of Life, the same as the function  above, in 2009. Scholes' function resembles McDonnell's APL2 implementation in its use of three-element vertical and horizontal rotation vectors, but uses Inner Product and Outer Product rather than Each as well as a different arithmetic scheme.