Conway's Game of Life: Difference between revisions

Jump to navigation Jump to search
→‎Historical implementations: Add links to ACM versions
(Move the John Scholes tutorial to its own page)
(→‎Historical implementations: Add links to ACM versions)
Line 9: Line 9:
== Historical implementations ==
== Historical implementations ==


First published in October 1970 by [[wikipedia:Martin Gardner|Martin Gardner]] in Scientific American<ref>Gardner, Martin (October 1970). "Mathematical Games – The fantastic combinations of John Conway's new solitaire game "life"". Scientific American. 223 (4): 120–123.</ref>, 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<ref>Jean Jacques Duby. "Conway's Game "Life"", '''APL Quote Quad''' Vol. III No. 2 & 3. 1971-10-01.</ref>, and was followed by a 9-line implementation in February 1972<ref>Bruce A. Beebe. "Life". '''APL Quote Quad''' Vol III No. 4. 1972-02-10</ref> and both a 6-line and a 4-line implementation in June 1972<ref>W. J. Jones, "Game of Life" and D. A. Bonyun, "Game of Life". '''APL Quote Quad''' Vol III No. 5. 1972-06-05</ref>.
First published in October 1970 by [[wikipedia:Martin Gardner|Martin Gardner]] in Scientific American<ref>Gardner, Martin (October 1970). "Mathematical Games – The fantastic combinations of John Conway's new solitaire game "life"". Scientific American. 223 (4): 120–123.</ref>, 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<ref>Jean Jacques Duby. "Conway's Game "Life"", [[APL Quote Quad]] Vol. III No. 2 & 3 p. 54. 1971-10-01. Reprinted ''SIGPLAN Notices'' [https://dl.acm.org/toc/sigplan/1971/6/10 Volume 6, Issue 10]; see [https://dl.acm.org/action/showFmPdf?doi=10.1145%2F1317448 Front matter] p. 120.</ref>, and was followed by a 9-line implementation in February 1972<ref>Bruce A. Beebe. "Life". [[APL Quote Quad]] Vol III No. 4 p. 37. 1972-02-10. Reprinted ''SIGPLAN Notices'' [https://dl.acm.org/toc/sigplan/1972/7/4 Volume 7, Issue 4]; in [https://dl.acm.org/doi/abs/10.1145/1115910.1115916 Algorithms].</ref> and both a 6-line and a 4-line implementation in June 1972<ref>W. J. Jones, "Game of Life" and D. A. Bonyun, "Game of Life". [[APL Quote Quad]] Vol III No. 5 p. 66-67. 1972-06-05</ref>.


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.<ref>[[Eugene McDonnell|McDonnell, Eugene]]. [https://www.jsoftware.com/papers/eem/life.htm "Life: Nasty, Brutish, and Short"]. APL88 Conference Proceedings, '''APL Quote-Quad''' Vol. 18 No. 2, 1987-12.</ref> McDonnell also described how future language features, such as the [[Commute]] operator and a tesselation operator related to [[Cut operator|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.
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.<ref>[[Eugene McDonnell|McDonnell, Eugene]]. [https://dl.acm.org/doi/abs/10.1145/55626.55659 "Life: Nasty, Brutish, and Short"] ([https://www.jsoftware.com/papers/eem/life.htm web]). [[APL88]] Conference Proceedings, [[APL Quote-Quad]] Vol. 18 No. 2, 1987-12.</ref> McDonnell also described how future language features, such as the [[Commute]] operator and a tesselation operator related to [[Cut operator|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 <source lang=apl inline>Life</source> above, in 2009.<ref name="scholes"/> 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.
[[John Scholes]] published a video in which he explains his own implementation of Life, the same as the function <source lang=apl inline>Life</source> above, in 2009.<ref name="scholes"/> 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.

Navigation menu