# Coding Example: Game of life (NumPy approach)

This lesson discusses the case study Game of life and explains its solution using NumPy approach.

## We'll cover the following

### NumPy Implementation

Starting from the Python version, the vectorization of the Game of Life requires two parts,

- one responsible for counting the neighbors
- one responsible for enforcing the rules

Neighbor-counting is relatively easy if we remember we took care of adding a null border around the arena. By considering partial views of the arena we can actually access neighbors quite intuitively as illustrated below for the one-dimensional case:

```
┏━━━┳━━━┳━━━┓───┬───┐
Z[:-2] ┃ 0 ┃ 1 ┃ 1 ┃ 1 │ 0 │ (left neighbors)
┗━━━┻━━━┻━━━┛───┴───┘
↓︎
┌───┏━━━┳━━━┳━━━┓───┐
Z[1:-1] │ 0 ┃ 1 ┃ 1 ┃ 1 ┃ 0 │ (actual cells)
└───┗━━━┻━━━┻━━━┛───┘
↑
┌───┬───┏━━━┳━━━┳━━━┓
Z[+2:] │ 0 │ 1 ┃ 1 ┃ 1 ┃ 0 ┃ (right neighbors)
└───┴───┗━━━┻━━━┻━━━┛
```

Going to the two dimensional case requires just a bit of arithmetic to make sure to consider all the eight neighbors.

Get hands-on with 1200+ tech skills courses.