Snakes and Ladders is a children's game played on a 10x10 numbered board. A player's turn consists of rolling a single die, and moving the indicated number of squares. If the final square is the foot of a ladder, the player moves up to a higher numbered square. If the final square is the mouth of a snake, the player moves downward.

It is a simple exercise to create a simulation of the game for several players.

Since the game is essentially a race, with no other competition between the players, it can be studied in a simplified version in which there is only one player.

For the one-player version of the game, it is interesting to pose the question of the average length of a game, that is, how many rolls of the die it takes in order to reach the final square.

By adding a square 0, where the player begins, the game board can be modeled as a vector of length 101, and the transitions from one square to another can be modeled by a transition matrix. Most commonly, the entries in row I will be zero except that columns I+1 through I+6 will have the value 1/6. However, rows which correspond to a snake or ladder, and rows for which I+6 is greater than 100, must be handled specially.

Given the transition matrix A, the one player game can be modeled as a Markov Chain Monte Carlo system. In particular, given an initial starting vector v, the probability distribution after one move is the vector A' * v, and repeated multiplication by A' will display the exact probability distribution at every step.

### Languages:

SNAKES_AND_LADDERS is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

### Related Data and Programs:

BROWNIAN_MOTION_SIMULATION, a Python library which simulates Brownian motion in an M-dimensional region.

DUEL_SIMULATION, a Python program which simulates N repetitions of a duel between two players, each of whom has a known firing accuracy.

### Reference:

1. Steve Althoen, Larry King, Kenneth Schilling,
How long is a game of Snakes and Ladders?,
The Mathematical Gazette,
Volume 77, Number 478, March 1993, pages 71-76.
2. Nick Berry,
A Mathematical Analysis of Snakes and Ladders,
http://www.datagenetics.com/blog/november12011/index.html
3. Desmond Higham, Nicholas Higham,
MATLAB Guide,
SIAM, 2005,
ISBN13: 9780898717891.

### Source Code:

• average_length.py, estimates the average number of moves in a one-player game.
• game_length.py, simulates a single one-player game, returning the number of moves.
• one_game.py, simulates a single one-player game, printing out all the moves.
• one_game.txt, an output file.

You can go up one level to the PYTHON source codes.