Skip to content

Instantly share code, notes, and snippets.

@alexjlockwood
Last active July 17, 2023 13:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexjlockwood/2b807410dec40f6e721826fec9878a42 to your computer and use it in GitHub Desktop.
Save alexjlockwood/2b807410dec40f6e721826fec9878a42 to your computer and use it in GitHub Desktop.
Tip Toe path algorithm

How a path is generated

Step 1

Place two 4x1 vertical stack of tiles and three 3x1 vertical stack of tiles on the grid. The order in which you place the tiles is random (so for example there would be a 2 / 5 = 40% chance that the path could end with a 4x1 line to the finish). The stacks are placed such that the top of one stack will align to the bottom of the next stack. The tips of the stacks are not allowed to intersect.

For example, after step 1 it could look like this:

|x| | | | | | | | | |
|x| | | | | | | | | |
|x| | | | | | | | | |
|x| | |x| | | | | | |  
| | | |x| | | | | | |
| | | |x| | | | | | |  
| | | |x| | | | | |x|
| | | | | | | | | |x|
| | | |x| | | | | |x|
| | | |x| | | | | | |
| |x| |x| | | | | | |
| |x| | | | | | | | |  
| |x| | | | | | | | | 

Step 2

Draw horizontal lines connecting each of the stacks to finish the path:

|x| | | | | | | | | |
|x| | | | | | | | | |
|x| | | | | | | | | |
|x|x|x|x| | | | | | |  
| | | |x| | | | | | |
| | | |x| | | | | | |  
| | | |x|x|x|x|x|x|x|
| | | | | | | | | |x|
| | | |x|x|x|x|x|x|x|
| | | |x| | | | | | |
| |x|x|x| | | | | | |
| |x| | | | | | | | |  
| |x| | | | | | | | | 

Step 3

Create a second path and then combine the two, which will be the final Tip Toe path used in the level.

Tip Toe path examples

These are just examples generated from this page illustrating how different paths can be made:

| | |x| | | | | | | |   | |x| | | | | | | | |   | |x|x| | | | | | | |   
| | |x| | | | | | | |   | |x| | | | | | | | |   | |x|x| | | | | | | |   
| | |x| | | | | | | |   | |x|x|x|x|x|x|x|x| |   | |x|x|x|x|x|x|x|x| |   
| |x|x| | | | | | | |   | | | | | | | | |x| |   | |x|x| | | | | |x| |   
| |x| | | | | | | | |   | | | | | | | | |x| |   | |x| | | | | | |x| |   
| |x|x|x| | | | | | |   |x|x|x|x|x|x|x|x|x| |   |x|x|x|x|x|x|x|x|x| |   
| | | |x| | | | | | | + |x| | | | | | | | | | = |x| | |x| | | | | | |
| | | |x| | | | | | |   |x|x|x|x|x|x|x|x|x|x|   |x|x|x|x|x|x|x|x|x|x|   
| | | |x|x| | | | | |   | | | | | | | | | |x|   | | | |x|x| | | | |x|   
| | | | |x| | | | | |   | | | | | | | | |x|x|   | | | | |x| | | |x|x|   
| | | | |x|x|x|x| | |   | | | | | | | | |x| |   | | | | |x|x|x|x|x| |   
| | | | | | | |x| | |   | | | | | | | | |x| |   | | | | | | | |x|x| |   
| | | | | | | |x| | |   | | | | | | | | |x| |   | | | | | | | |x|x| |
| | | | | | | | | |x|   | |x| | | | | | | | |   | |x| | | | | | | |x|   
| | | | | | | | | |x|   | |x| | | | | | | | |   | |x| | | | | | | |x|   
| | | | | | | | | |x|   | |x| | | | | | | | |   | |x| | | | | | | |x|   
| | | |x|x|x|x|x|x|x|   | |x|x|x|x|x| | | | |   | |x|x|x|x|x|x|x|x|x|   
| | | |x| | | | | | |   | | | | | |x| | | | |   | | | |x| |x| | | | |   
| | | |x| | | | | | |   |x|x|x|x|x|x| | | | |   |x|x|x|x|x|x| | | | |   
|x|x|x|x| | | | | | | + |x| | | | | | | | | | = |x|x|x|x| | | | | | |
|x| | | | | | | | | |   |x|x|x|x|x| | | | | |   |x|x|x|x|x| | | | | |   
|x|x|x|x|x| | | | | |   | | | | |x| | | | | |   |x|x|x|x|x| | | | | |   
| | | | |x| | | | | |   | | | | |x|x| | | | |   | | | | |x|x| | | | |   
| | | | |x|x|x|x|x| |   | | | | | |x| | | | |   | | | | |x|x|x|x|x| |   
| | | | | | | | |x| |   | | | | | |x| | | | |   | | | | | |x| | |x| |   
| | | | | | | | |x| |   | | | | | |x| | | | |   | | | | | |x| | |x| | 
|x| | | | | | | | | |   | |x| | | | | | | | |   |x|x| | | | | | | | |   
|x| | | | | | | | | |   | |x| | | | | | | | |   |x|x| | | | | | | | |   
|x| | | | | | | | | |   | |x| | | | | | | | |   |x|x| | | | | | | | |   
|x|x|x|x| | | | | | |   |x|x| | | | | | | | |   |x|x|x|x| | | | | | |   
| | | |x| | | | | | |   |x| | | | | | | | | |   |x| | |x| | | | | | |   
| | | |x| | | | | | |   |x|x|x|x|x|x| | | | |   |x|x|x|x|x|x| | | | |   
| | | |x|x|x|x|x|x|x| + | | | | | |x| | | | | = | | | |x|x|x|x|x|x|x|
| | | | | | | | | |x|   | | | | | |x| | | | |   | | | | | |x| | | |x|   
| | | |x|x|x|x|x|x|x|   | | | | | |x|x|x|x|x|   | | | |x|x|x|x|x|x|x|   
| | | |x| | | | | | |   | | | | | | | | | |x|   | | | |x| | | | | |x|   
| |x|x|x| | | | | | |   | | | | | | | | |x|x|   | |x|x|x| | | | |x|x|   
| |x| | | | | | | | |   | | | | | | | | |x| |   | |x| | | | | | |x| |   
| |x| | | | | | | | |   | | | | | | | | |x| |   | |x| | | | | | |x| |  
|x| | | | | | | | | |   | | | |x| | | | | | |   |x| | |x| | | | | | |   
|x| | | | | | | | | |   | | | |x| | | | | | |   |x| | |x| | | | | | |   
|x|x|x| | | | | | | |   | | | |x| | | | | | |   |x|x|x|x| | | | | | |   
| | |x| | | | | | | |   | | | |x|x|x|x|x| | |   | | |x|x|x|x|x|x| | |   
| | |x| | | | | | | |   | | | | | | | |x| | |   | | |x| | | | |x| | |   
| | |x|x| | | | | | |   | | | | | | | |x| | |   | | |x|x| | | |x| | |   
| | | |x| | | | | | | + | | | | | | | |x|x|x| = | | | |x| | | |x|x|x|
| | | |x|x|x| | | | |   | | | | | | | | | |x|   | | | |x|x|x| | | |x|   
| | | | | |x| | | | |   | | | | | | | |x|x|x|   | | | | | |x| |x|x|x|   
| | | | | |x|x| | | |   | | | | | | | |x| | |   | | | | | |x|x|x| | |   
| | | | | | |x| | | |   | |x|x|x|x|x|x|x| | |   | |x|x|x|x|x|x|x| | |   
| | | | | | |x| | | |   | |x| | | | | | | | |   | |x| | | | |x| | | |   
| | | | | | |x| | | |   | |x| | | | | | | | |   | |x| | | | |x| | | | 
| | | | | | | |x| | |   | |x| | | | | | | | |   | |x| | | | | |x| | |   
| | | | | | | |x| | |   | |x| | | | | | | | |   | |x| | | | | |x| | |   
| | | | | | | |x|x| |   | |x| | | | | | | | |   | |x| | | | | |x|x| |   
| | | | | | | | |x| |   | |x|x|x| | | | | | |   | |x|x|x| | | | |x| |   
| | | | | | | |x|x| |   | | | |x| | | | | | |   | | | |x| | | |x|x| |   
| | | | | | | |x| | |   | | | |x| | | | | | |   | | | |x| | | |x| | |   
| | | | |x|x|x|x| | | + | | | |x|x|x|x| | | | = | | | |x|x|x|x|x| | |
| | | | |x| | | | | |   | | | | | | |x| | | |   | | | | |x| |x| | | |   
| | | | |x| | | | | |   |x|x|x|x|x|x|x| | | |   |x|x|x|x|x|x|x| | | |   
|x|x|x|x|x| | | | | |   |x| | | | | | | | | |   |x|x|x|x|x| | | | | |   
|x| | | | | | | | | |   |x|x| | | | | | | | |   |x|x| | | | | | | | |   
|x| | | | | | | | | |   | |x| | | | | | | | |   |x|x| | | | | | | | |   
|x| | | | | | | | | |   | |x| | | | | | | | |   |x|x| | | | | | | | |  
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment