On this page
Take a sheet of squared paper, put a few counters on it, and apply three rules again and again. Some patterns die out, some freeze, some blink back and forth, and some crawl across the page. This is the Game of Life, invented by John Conway, and it has kept mathematicians and programmers busy since 1970. This post covers who Conway was, how he arrived at the rules, a worked example you can do by hand, a short Python version, and the mistakes people make when they first try it.
Who was John Conway?
His MacTutor biography gives his birth in Liverpool on 26 December 1937. At eleven, asked what he wanted to be, he said a mathematician at Cambridge, and he became one: a BA in 1959, a doctorate in 1964 and a lectureship the same year. In 1968 he announced a new finite simple group found in the symmetries of the Leech lattice, a dense packing of spheres in 24 dimensions. He was elected a Fellow of the Royal Society in 1981.
Princeton University's obituary records that he joined its faculty in 1987 as the John von Neumann Professor, and died on 11 April 2020 in New Brunswick, New Jersey, from complications related to COVID-19, aged 82. It notes that, according to his colleague Simon Kochen, the work he was proudest of was not Life but his invention of the surreal numbers.
How did Conway find the rules?
MacTutor explains that Conway set out to simplify John von Neumann's 1940s model of a machine that could build copies of itself. He tried and rejected many versions, including triangular and hexagonal grids and other laws of birth and death, working through large amounts of squared paper with counters, coins and Go stones until he found rules with a workable balance between life and death.
He showed the game to his friend Martin Gardner, who described it in his Mathematical Games column in Scientific American in October 1970. Gardner's column set out the rules. Each cell has eight neighbours, four touching its sides and four touching its corners.
Survivals. A counter with two or three neighbours survives.
Deaths. A counter with four or more neighbours dies from overpopulation; one with one or none dies from isolation.
Births. An empty cell with exactly three neighbours gets a counter.
Gardner stressed that all births and deaths happen at the same moment, forming one generation. He also reported that Conway conjectured no pattern could grow without limit, and offered 50 dollars to the first person to prove or disprove it before the end of the year.
Worked example: the blinker
Place three counters in a row, in row 2 at columns 1, 2 and 3.
Middle counter (2, 2). Its neighbours are (2, 1) and (2, 3): two, so it survives.
End counters (2, 1) and (2, 3). Each has only the middle as a neighbour: one, so both die.
Empty cells (1, 2) and (3, 2), above and below the middle. Each touches all three counters: exactly three, so both get a counter.
Empty corner cells such as (1, 1). It touches (2, 1) and (2, 2): two, so nothing is born.
The next generation is a vertical line through (1, 2), (2, 2) and (3, 2). Apply the rules again and it turns back into the row. Gardner's column calls this period-2 pattern a blinker. By contrast, a 2 × 2 block never changes: each counter has three neighbours, and no empty cell touches more than two.
How can you code it?
Here is a short Python version that stores only the live cells.
def step(live):
counts = {}
for (r, c) in live:
for dr in (-1, 0, 1):
for dc in (-1, 0, 1):
if dr or dc:
cell = (r + dr, c + dc)
counts[cell] = counts.get(cell, 0) + 1
return {cell for cell, n in counts.items()
if n == 3 or (n == 2 and cell in live)}
blinker = {(2, 1), (2, 2), (2, 3)}
print(step(blinker)) # the cells (1, 2), (2, 2), (3, 2), in some orderIt counts neighbours for every cell next to a live one, then keeps cells with three neighbours, or with two if they were already alive. Because it builds a new set, every update happens at once. Our guide to Python functions for CBSE covers the function basics used here.
What mistakes do people make?
Updating in place. Changing cells as you go breaks the rule that all changes happen together.
Forgetting diagonals. Each cell has eight neighbours, not four.
Counting the cell itself. A cell is not its own neighbour.
Mixing up the numbers. Survival needs two or three; birth needs exactly three.
Watching rules play out is often clearer than reading them. The Fermi Simulation Lab has interactive simulations for ideas that are easier to see than read.
What can a student take from Conway's way of working?
Treat play as serious work. Manjul Bhargava, quoted in the Princeton obituary, said that for Conway "playing games and working on mathematics were closely intertwined activities for him, if not actually the same activity."
Try many versions and reject most. The rules came after many failed grids and laws.
Look for big behaviour from small rules. Three short rules gave a field of research.
Next step: run step four times on the glider {(0, 1), (1, 2), (2, 0), (2, 1), (2, 2)} and check that it has moved one square diagonally.



