Skip to main content
15 of 19
edited tags
Martin Ender
  • 198.3k
  • 67
  • 455
  • 999

Implement the Game of Life on Anything but a Regular Grid

Conway's Game of Life is (almost) always played on a regular square grid, but it doesn't need to be.

Write a program that implements the standard cell neighboring rules from Conway's Game of Life on a two-dimensional tiling of the Euclidean plane that is not a regular tiling of squares, triangles, or hexagons.

Specifically, the tiling you choose...

  1. Must contain at least 2 (but finitely many) differently shaped prototiles.
    • The different shapes may be scaled or rotated versions of each other.
    • They must be able to tile the entire plane without leaving holes.
    • They must be simple polygons with finite perimeter. (They may not be weakly simple.)
  2. Must be isomorphically distinct from the square, triangular, and hexagonal grids.
    • Any tiling that trivially boils down to a regular square, triangular, or hexagonal grid is not allowed. (You can still use squares/triangles/hexagons in other tilings.)
    • The border between any two prototiles may contain multiple edges and vertices, but it must be continuous.

Your tiling may be periodic or aperiodic, but when expanded to cover the entire plane, each prototile must appear infinitely many times. (So no "hardcoding" certain parts of your tiling to help achieve the extra points below.)

Each of your prototiles represents one Game of Life cell that neighbors other cells:

  • Cells that share any edges or any vertices are considered neighbors.
  • Cells that share multiple edges or vertices are still only counted at each others neighbors once.
  • Cells cannot neighbor themselves.

Tiling inspiration links:

#Output Your program should output some sort of graphical representation of your tiling with the Game of Life being played in it, which you should of course post in image/gif/jsfiddle format.

Please draw tile edge lines and use a light color for dead cells and a dark color for live cells.

#Scoring Your submission score is the number of upvotes minus downvotes, plus extra points for discovering common Game of Life patterns in your tiling:

  • Find a still life - a pattern that doesn't change from one generation to the next. (+2)
  • Find oscillators with period 2 through 29. (+3 for every period you find up to a total of 5 periods or +15 points max)
  • Find an oscillator with a period of 30 or more. (+7)
  • Find a spaceship - something that can get arbitrarily far away from it's starting location without leaving any debris. (It may not necessarily be a moving oscillator.) (+10)
  • Find another spaceship that moves in a distinctly different way (and is not a mirrored version of the first spaceship), e.g. see glider and LWSS. (+10)
  • Find a pattern of infinite growth. You do not have to prove that the growth is infinite, just show us enough evidence of the pattern that it is practically certain. (+25)
  • Find a gun - something that generates spaceships forever (this also counts as infinite growth). (+50)

The infinite growth patterns must start with a finite number of live cells and the other patterns must always contain a bounded number of live cells (e.g. a spaceship should not grow arbitrarily large over time).

Due to the nature of aperiodic tilings it seems likely that many of these patterns would be impossible to implement in them. So any verifiably aperiodic tiling gets +40 points automatically. A pattern that works in one place in an aperiodic tiling does not have to work in other places.

Each of the bonuses can only be applied once. Naturally we'll need to see the output to verify them. The highest score wins.

#Notes

  • Each answer can only have bonuses applied to one specific tiling. (Though feel free to include related tilings.)
  • The Game of Life rules are as follows:
    1. Any live cell with less than 2 or more than 3 live neighbors dies.
    2. Any dead cell with exactly 3 live neighbors comes alive.
    3. Other cells do not change.
  • Patterns for the extra points should be possible regardless of boundary conditions, but otherwise you may choose any boundary conditions you want.
  • By default the background should be all dead tiles.

Thanks to Peter Taylor, Jan Dvorak, and githubphagocyte for helping to hammering out loopholes in what tilings should be allowed.

Calvin's Hobbies
  • 90.7k
  • 46
  • 348
  • 565