Skip to content

Latest commit

 

History

History
154 lines (146 loc) · 29 KB

README.md

File metadata and controls

154 lines (146 loc) · 29 KB

Build A Maze

Use Maze by executing

from maze import Maze

maze = Maze(4)

maze.remove_segments()
print("Result:")
print(maze)

Example result:

+---+---+---+---+
| 0 | 1   2 | 3 |
+   +---+---+   +
| 4   5   6 | 7 |
+---+---+   +   +
| 8   9  10 |11 |
+   +   +---+   +
|12  13  14  15 |
+---+---+---+---+

Big Result:

Result:
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|                   |       |               |                       |                   |               |                               |                       |       |           |                                                           |
+---+   +---+---+---+   +---+   +---+   +   +---+   +---+---+---+   +   +---+---+   +---+---+---+   +   +   +---+   +   +---+   +---+   +---+---+   +   +---+---+   +   +   +   +   +---+   +---+   +   +   +---+   +   +   +   +---+   +   +   +
|       |                   |           |       |   |   |                   |       |                       |       |   |                       |       |                               |   |       |   |                                       |
+   +   +---+   +---+   +---+   +---+---+   +   +   +---+   +   +   +   +   +   +   +   +---+---+   +   +   +   +   +   +   +   +---+---+   +   +   +---+   +   +   +---+---+---+   +   +---+---+   +---+---+---+---+   +---+---+   +   +   +---+
|   |       |           |   |   |       |                                       |   |   |       |                   |                   |           |               |               |           |           |   |                       |       |
+---+   +---+   +   +   +---+---+   +---+   +   +   +---+   +   +   +---+   +---+   +   +---+   +   +   +   +---+---+---+---+   +   +   +   +   +   +---+   +---+   +   +   +   +   +---+   +---+---+---+   +---+---+---+---+   +   +   +   +---+
|               |       |           |                                   |           |   |   |       |                   |       |                   |       |       |           |   |                   |           |                       |   |
+---+---+---+---+---+   +   +   +---+   +---+---+---+   +   +   +---+   +   +   +---+---+   +---+   +---+---+   +   +---+   +   +---+   +---+   +   +---+---+   +---+---+   +   +   +   +   +   +   +   +   +   +   +   +   +---+   +   +---+---+
|       |       |       |   |           |       |       |           |   |       |       |       |       |   |               |           |   |               |       |   |   |           |           |   |   |       |   |   |   |           |   |
+   +   +   +   +   +---+   +---+---+---+   +---+   +   +---+---+   +   +   +   +   +---+   +---+   +   +---+   +---+   +---+   +   +   +   +   +   +   +   +---+   +   +   +   +   +---+---+---+   +   +   +   +---+   +---+   +   +   +---+   +
|       |                           |   |   |   |           |       |   |   |   |       |   |               |   |               |                   |               |   |       |   |   |   |           |               |       |               |
+---+---+   +---+   +   +---+   +   +   +   +---+   +---+   +   +   +   +   +   +   +   +   +   +---+   +   +   +   +---+   +---+---+   +---+   +   +---+---+   +   +   +---+---+   +   +---+   +   +---+---+   +   +   +   +   +---+   +   +---+
|                   |       |   |       |               |       |                                   |       |   |                           |       |   |   |   |   |           |       |               |   |   |       |           |           |
+   +   +---+---+---+   +   +   +   +   +---+---+   +---+   +   +---+   +   +   +---+---+---+---+   +---+---+   +   +---+---+   +   +---+   +   +---+---+---+   +   +   +   +   +---+   +   +   +---+   +   +   +---+   +   +---+   +---+   +---+
|           |       |   |       |   |                       |   |   |           |       |   |   |           |   |               |   |   |           |               |   |                   |       |   |       |   |           |       |   |   |
+   +   +   +   +   +   +   +---+---+   +   +   +   +---+   +---+   +   +   +   +   +   +---+---+   +   +---+   +---+   +   +---+---+   +   +   +---+   +---+   +   +   +   +   +   +---+   +---+   +   +---+---+   +   +   +---+   +   +   +---+
|       |       |       |   |       |   |       |   |           |   |       |               |   |   |                                       |       |               |   |   |               |   |       |   |                                   |
+   +---+   +   +   +   +   +   +---+---+---+   +---+---+---+---+   +   +---+---+   +   +   +   +   +   +   +---+   +   +   +   +   +   +---+   +---+   +---+   +   +---+   +---+   +---+   +   +---+   +   +   +   +   +   +   +   +---+   +---+
|       |               |           |                   |       |                               |   |   |   |                   |       |           |   |   |   |   |           |   |               |   |       |       |   |       |           |
+   +---+---+---+   +   +   +---+   +   +   +---+   +   +   +   +---+---+---+   +   +   +---+   +   +   +   +---+---+   +   +   +---+---+   +---+   +---+   +---+   +   +   +   +---+   +   +   +   +---+---+---+   +---+   +   +---+   +---+   +
|           |                   |           |               |       |   |               |   |       |   |       |                   |   |               |       |   |   |               |   |   |       |       |           |   |   |           |
+   +   +   +   +   +---+---+   +---+   +   +---+   +---+---+   +---+   +---+   +---+   +---+---+   +   +   +   +   +---+---+---+---+   +   +   +   +   +   +   +   +   +   +---+   +   +   +   +   +   +   +   +   +---+---+   +   +   +---+---+
|       |           |       |                                           |                                           |   |   |       |                                           |   |           |           |       |           |               |
+---+   +---+   +   +   +   +   +   +   +   +   +---+---+---+---+---+   +   +   +   +   +   +---+   +   +   +   +---+---+---+---+   +   +   +---+---+   +   +---+---+---+---+   +   +   +   +---+   +   +---+   +   +   +   +   +   +---+   +   +
|       |       |           |       |           |       |           |               |   |           |           |   |   |               |   |       |       |   |       |   |                                                           |       |
+   +   +   +   +---+---+   +   +   +---+   +---+   +   +   +---+   +   +   +---+   +   +---+---+   +   +   +   +   +---+---+   +   +   +   +---+   +   +---+---+   +   +---+---+---+---+---+   +---+   +---+---+   +   +   +   +---+   +   +   +
|   |       |           |   |       |                   |   |   |           |               |               |           |   |               |   |           |               |           |                   |   |                       |       |
+   +---+   +   +---+   +---+---+   +---+   +   +---+---+---+   +   +   +---+   +   +   +---+---+---+---+---+   +   +   +   +   +---+---+   +   +   +   +---+---+   +---+   +---+---+   +---+   +---+   +   +   +   +   +   +   +   +   +   +   +
|       |           |   |   |           |   |       |       |   |   |               |   |       |           |                               |   |   |       |       |   |   |           |       |               |       |   |   |   |   |       |
+   +   +   +   +---+   +   +---+   +---+   +---+   +   +   +---+   +   +---+---+---+   +   +   +---+---+   +---+   +---+   +   +   +---+   +---+   +   +   +---+---+---+---+---+   +---+---+   +   +---+   +   +   +   +---+   +   +   +   +   +
|       |       |   |   |   |   |   |                       |                   |   |       |   |                               |       |                               |       |       |   |                               |               |   |
+   +---+   +---+   +   +   +---+---+   +---+   +   +   +   +   +---+   +   +---+---+   +   +   +   +   +---+   +---+---+   +---+   +   +   +   +   +---+   +   +   +---+   +   +   +---+---+---+---+---+---+   +---+   +   +   +   +   +   +   +
|       |       |                           |   |   |                       |       |       |   |   |   |                           |                   |   |               |       |               |                       |   |               |
+---+   +   +   +---+   +---+   +---+   +   +---+   +---+   +   +   +   +---+   +   +---+   +---+---+---+   +---+---+   +---+---+   +   +---+   +   +---+   +---+   +   +---+   +---+   +   +---+---+---+---+   +   +---+---+---+   +   +   +---+
|   |   |                   |               |                                   |   |   |   |       |   |           |           |                   |       |                   |       |               |   |   |   |       |           |   |   |
+   +---+---+---+   +   +   +   +   +   +---+---+---+   +   +---+   +---+---+   +   +---+   +   +   +---+---+   +   +   +---+   +   +   +---+---+---+---+   +---+   +   +---+   +   +   +   +   +---+   +---+   +   +---+   +   +---+---+   +   +
|   |   |   |       |           |           |                                   |   |           |       |                       |       |   |                   |       |               |       |       |   |       |       |                   |
+   +   +---+---+   +---+---+   +---+   +   +   +   +   +---+   +   +   +   +   +   +---+   +   +---+---+   +---+   +   +   +   +   +   +   +---+   +   +   +   +---+---+---+   +---+   +   +   +   +---+   +---+   +   +---+---+---+   +   +   +
|           |               |                   |   |       |           |   |   |           |   |   |   |   |   |       |           |               |       |                                   |                   |           |       |       |
+   +   +   +   +---+   +---+   +---+---+   +   +---+---+   +   +---+   +   +   +   +---+   +   +   +   +---+   +   +   +   +   +   +---+   +   +---+---+   +---+   +   +---+   +---+---+   +   +   +   +   +   +   +   +---+   +   +---+   +   +
|           |                               |               |   |   |   |   |   |   |               |   |           |   |       |       |       |       |                                       |               |   |   |           |       |   |
+---+---+---+---+   +   +---+   +   +   +   +   +---+   +   +   +   +   +---+---+   +   +   +   +---+   +---+---+   +   +   +---+   +   +   +---+---+   +   +   +---+---+---+   +---+   +---+   +---+   +---+   +   +---+---+---+   +   +   +---+
|   |           |           |           |                       |   |               |       |                           |       |   |   |           |                               |       |       |           |       |       |   |   |       |
+   +   +   +   +---+---+   +---+---+   +---+   +   +---+   +---+---+---+   +---+   +---+   +   +---+---+   +   +   +   +   +---+   +---+---+   +---+   +   +   +   +   +   +---+---+   +   +   +   +---+---+   +   +   +   +---+   +   +   +   +
|       |           |   |       |               |   |   |                               |   |   |       |   |   |           |       |   |           |   |           |   |   |       |                   |       |   |                       |   |
+   +   +---+---+   +   +---+   +---+---+---+---+   +   +   +---+---+---+   +   +   +   +   +   +   +---+   +   +   +   +---+   +   +   +   +   +---+---+   +---+---+   +---+   +   +   +   +---+   +   +   +   +---+   +   +   +---+   +   +---+
|       |   |   |               |       |       |       |   |   |   |           |                                                                   |           |       |   |   |                       |           |   |                       |
+   +---+   +---+---+   +   +   +   +---+---+---+   +   +   +---+---+   +   +   +---+   +   +   +   +   +---+---+   +   +   +   +   +   +---+---+---+---+   +---+   +   +   +---+   +   +   +---+   +---+---+---+---+   +   +   +   +   +   +   +
|       |   |                               |   |           |   |                       |   |   |                   |       |       |       |   |               |   |   |   |                                   |                           |   |
+   +   +   +---+   +   +   +   +   +   +---+---+---+   +   +   +---+---+---+   +---+   +   +---+---+   +   +   +   +   +---+   +---+   +   +   +---+---+   +---+   +   +---+   +---+---+   +---+   +---+   +---+   +---+   +   +   +   +---+   +
|           |                   |   |       |   |                   |       |   |       |                   |   |   |   |   |   |   |       |           |   |   |               |   |                                   |                       |
+   +   +   +   +---+   +   +---+   +   +---+---+   +---+---+---+   +   +   +   +---+   +   +   +   +   +   +---+   +---+---+   +   +   +---+   +---+   +---+   +   +---+   +   +   +   +   +   +   +   +   +---+---+   +   +   +---+   +   +   +
|       |                   |   |                   |       |                   |   |   |                           |   |           |       |   |   |       |       |       |       |   |                           |           |       |       |
+---+   +---+---+   +   +   +   +   +---+   +---+   +---+   +   +   +   +---+---+   +---+---+   +   +   +---+---+---+   +---+   +---+   +   +   +---+---+   +   +---+   +---+---+   +   +   +   +---+---+   +   +---+   +   +---+---+   +   +   +
|   |   |   |                   |   |                       |       |   |   |   |       |   |       |               |           |   |       |       |               |           |   |   |       |                           |   |       |   |   |
+---+---+   +   +   +   +   +   +   +---+   +   +   +---+   +---+   +   +---+   +   +   +   +---+---+   +   +   +   +   +   +   +---+---+---+   +   +   +   +---+   +---+   +---+   +---+---+   +---+   +   +   +---+---+---+---+   +   +   +   +
|   |                           |                       |               |       |       |       |       |           |   |   |           |                   |               |       |               |           |               |       |       |
+   +   +   +   +   +---+---+---+   +   +---+---+   +   +   +   +---+---+   +   +   +---+---+   +   +   +   +   +   +   +---+---+   +   +   +---+---+---+   +   +---+---+   +   +   +---+   +   +   +---+   +---+---+---+---+   +   +---+   +---+
|           |       |       |   |                                               |   |   |               |                                               |           |   |       |                           |               |   |   |   |   |   |
+   +---+   +   +   +---+   +   +   +   +   +---+   +---+---+---+   +   +   +---+---+   +   +   +---+---+   +   +   +---+   +   +---+   +   +   +   +   +---+   +   +   +   +   +---+   +   +   +---+   +   +   +   +---+   +   +   +   +---+   +
|   |   |                                   |   |           |   |                                       |               |                       |           |   |           |               |                           |       |               |
+   +   +   +   +---+   +   +---+---+   +---+---+   +---+   +   +---+   +   +   +   +   +   +   +---+   +---+---+   +---+   +---+---+   +---+   +---+   +   +   +   +---+   +   +   +   +---+---+---+---+   +   +---+   +   +   +---+---+   +   +
|   |       |                   |                   |       |       |   |       |   |   |   |                                               |       |               |   |               |       |   |   |                       |               |
+   +---+---+   +   +---+   +   +   +   +---+   +   +   +   +   +---+   +---+   +   +---+---+   +   +   +   +---+---+   +   +---+---+---+   +---+   +   +   +---+   +   +---+   +---+---+   +   +---+   +---+   +   +   +   +---+---+   +---+   +
|               |           |   |   |               |                   |   |           |               |           |   |                   |           |       |                   |           |   |       |           |       |   |   |       |
+   +   +---+   +   +---+   +   +---+   +   +   +   +---+   +   +   +   +   +   +---+   +   +   +   +   +---+---+   +   +   +---+   +   +   +---+   +---+   +   +   +---+   +   +   +---+---+---+   +   +   +---+   +   +   +   +---+---+---+---+
|   |       |   |       |   |               |   |   |           |               |   |                   |                   |       |               |               |   |               |           |                       |                   |
+---+---+   +   +---+---+---+   +   +   +   +   +---+---+   +   +---+   +   +   +   +   +   +---+---+   +   +   +   +   +   +---+   +   +   +---+   +---+   +   +---+   +   +   +   +---+   +   +   +---+   +   +---+   +   +   +   +---+   +---+
|               |   |                   |   |                       |           |       |           |           |   |                                       |       |               |               |   |       |           |           |   |   |
+---+   +   +   +   +   +---+   +---+   +   +---+   +---+   +   +   +   +---+---+---+   +   +---+---+---+   +   +   +---+---+---+   +   +   +   +   +   +---+---+   +   +---+   +   +   +   +---+---+   +---+   +   +   +   +   +---+   +---+   +
|           |   |                           |   |       |           |   |   |           |       |   |                   |               |           |           |                   |           |   |                   |       |           |   |
+   +---+   +---+---+   +   +   +---+---+---+---+   +---+   +   +   +   +   +   +---+   +---+---+---+   +---+   +---+   +   +   +---+   +---+   +   +---+---+   +   +   +---+---+   +---+---+---+---+   +   +   +---+   +---+   +---+   +   +   +
|   |       |   |       |               |   |   |   |   |           |                           |   |       |   |           |   |       |   |                               |           |                   |       |   |           |   |   |   |
+   +   +   +   +   +   +---+   +---+   +   +---+   +---+   +   +   +   +   +   +   +   +---+   +   +---+   +   +   +---+---+   +   +---+   +   +   +   +---+   +   +---+   +   +   +---+   +   +---+---+---+---+---+   +---+   +   +   +---+   +
|   |   |   |           |   |                   |           |           |                                       |   |           |   |               |       |   |           |       |   |   |       |       |               |   |           |   |
+   +   +   +---+   +   +---+   +   +   +   +   +   +   +   +   +   +---+   +---+   +---+   +---+   +---+---+   +   +   +---+---+   +---+   +---+   +   +---+---+   +   +---+   +   +---+---+---+   +   +   +   +   +   +   +---+   +   +---+   +
|                       |   |       |               |           |           |           |               |       |   |   |                           |   |   |                   |   |           |       |                       |           |   |
+---+   +---+---+   +   +   +   +---+   +---+   +   +   +   +   +---+---+   +   +---+   +   +---+---+   +   +   +   +---+   +   +   +---+   +   +   +---+   +   +---+   +---+   +---+---+   +   +   +   +   +---+   +   +   +   +   +---+   +   +
|           |           |   |   |   |   |       |       |           |                   |                       |                       |   |   |               |       |       |       |           |   |       |   |   |   |       |           |
+   +   +   +---+---+   +---+   +   +---+   +   +---+   +   +   +---+   +   +   +   +   +   +   +   +   +   +   +---+   +   +   +   +   +---+---+---+---+---+---+   +---+---+   +---+   +   +   +   +   +   +   +---+---+---+   +   +---+   +   +
|               |       |       |   |   |                           |   |   |           |                   |   |           |   |               |           |               |                   |   |   |       |   |   |                       |
+   +   +   +   +---+---+---+   +---+---+   +   +   +   +---+   +   +   +   +---+---+---+   +   +   +   +   +   +   +---+---+   +   +---+---+---+---+---+---+   +   +   +---+---+   +   +---+---+---+   +   +   +---+   +   +   +---+---+   +---+
|       |   |   |   |       |                       |       |                       |   |                       |           |   |       |   |           |           |           |               |       |   |       |                           |
+   +---+   +   +   +   +   +   +   +   +---+---+---+---+---+   +   +   +   +   +   +   +---+---+   +   +   +---+---+   +   +   +---+   +   +   +---+---+---+   +   +   +   +---+   +   +---+   +---+---+   +   +   +   +---+---+   +---+---+   +
|       |   |                           |   |           |                   |                   |           |   |   |       |                                   |       |   |   |   |                           |                   |   |       |
+   +   +---+   +   +   +---+   +   +   +   +   +---+   +---+   +   +   +   +---+---+---+---+   +---+   +---+   +---+---+---+   +---+   +---+   +   +   +---+---+   +---+   +   +   +   +   +   +   +   +---+   +   +   +   +---+   +   +   +   +
|   |       |   |   |           |           |           |   |                                       |                               |                       |   |               |   |   |   |   |       |   |       |       |           |       |
+   +---+---+---+   +---+   +---+   +---+---+   +   +   +---+---+   +   +   +   +   +---+---+---+---+---+   +---+---+   +   +   +   +   +   +---+---+---+   +   +   +   +   +   +   +   +   +---+   +---+   +---+   +---+---+---+---+   +---+   +
|   |   |       |   |   |               |   |               |   |   |   |   |   |   |               |       |                           |   |   |                   |                           |       |                                       |
+   +---+   +---+   +   +   +---+   +   +   +---+   +   +   +   +---+---+   +   +   +---+---+---+   +   +---+---+---+   +---+---+   +---+   +---+   +---+   +   +---+   +---+   +   +   +   +   +---+   +---+---+---+   +---+   +   +---+   +   +
|               |   |       |                       |   |   |       |   |       |                                   |           |                                       |   |                   |   |                       |                   |
+   +   +---+   +---+   +---+---+---+   +---+   +   +   +   +---+---+   +   +   +   +   +   +---+   +---+   +   +   +   +---+---+   +   +   +   +---+   +   +---+   +   +---+   +   +---+   +   +---+   +---+---+   +   +   +   +   +   +   +   +
|                           |           |                   |   |   |           |       |       |   |                   |           |       |           |                       |       |   |       |       |                   |   |   |   |   |
+   +   +   +---+   +---+   +   +   +---+---+   +   +---+---+   +   +---+---+---+   +   +---+---+   +---+---+   +   +---+   +---+   +   +---+   +   +---+   +---+   +---+   +---+---+   +---+   +---+   +---+   +---+   +   +   +   +---+---+---+
|               |               |   |       |               |       |       |           |                       |                                                               |       |                           |                   |       |
+---+   +---+   +---+   +   +   +   +   +   +---+   +   +   +---+---+   +   +   +---+   +---+   +---+   +   +   +   +   +   +---+---+---+   +   +---+---+   +   +   +   +---+   +---+---+   +   +---+---+   +   +---+   +---+---+   +   +---+   +
|           |           |   |       |   |           |                       |       |               |                                               |       |   |       |                   |       |   |   |   |   |               |   |       |
+   +   +   +---+---+---+---+   +---+   +   +   +   +   +   +   +---+   +---+   +   +---+   +   +---+---+---+---+---+   +---+   +---+   +---+   +---+   +   +---+---+   +---+   +   +---+---+---+   +   +---+   +   +   +   +   +---+   +   +   +
|       |                                                   |   |       |               |       |   |               |   |   |                               |   |   |   |                   |               |       |       |                   |
+---+---+---+   +   +   +   +---+   +   +---+   +---+   +   +---+---+---+   +---+   +   +---+---+---+---+   +---+   +---+   +   +   +   +   +   +---+   +   +---+   +---+---+   +   +---+   +   +   +   +---+   +---+---+   +   +---+   +   +---+
|   |   |           |   |       |               |   |   |       |                   |           |           |           |                   |               |   |   |   |                   |   |       |           |       |                   |
+   +   +   +   +   +   +   +---+   +   +   +   +---+---+   +---+   +   +   +   +---+---+---+---+   +---+   +---+   +   +   +   +---+   +   +---+   +   +---+---+---+---+   +   +   +   +   +   +   +   +   +   +---+   +   +---+---+   +   +---+
|       |       |                       |       |               |               |                   |   |                   |   |       |       |   |       |       |               |   |                   |                   |               |
+---+---+   +   +   +   +   +   +   +---+   +   +---+---+   +---+---+   +---+   +   +---+---+   +   +   +---+---+   +---+---+   +---+---+   +---+   +   +   +---+   +   +   +   +   +   +   +   +   +   +   +   +   +---+   +   +   +   +   +---+
|       |   |   |                   |                       |               |   |               |   |   |   |   |           |                                       |           |           |   |       |       |   |           |               |
+   +   +---+   +   +---+   +   +   +   +   +---+   +---+   +   +   +---+---+---+   +---+---+---+   +   +---+---+   +---+   +---+---+   +   +   +   +   +---+   +   +   +---+   +   +---+---+---+   +   +---+   +   +   +   +   +   +---+   +---+
|               |       |       |   |   |           |   |       |                       |           |           |   |       |       |           |               |       |               |               |           |   |       |               |
+   +   +   +   +   +---+---+   +   +---+   +   +---+---+---+   +   +---+   +---+   +---+   +   +   +   +   +---+   +   +   +   +---+---+   +   +---+---+---+---+   +   +---+---+---+   +   +   +---+---+   +---+---+   +---+---+---+---+   +---+
|   |       |                                                           |       |   |   |   |       |                                       |   |   |                   |           |                   |       |   |           |               |
+---+   +   +---+---+---+   +   +   +   +   +---+---+   +   +   +---+   +   +   +   +---+---+   +---+   +   +---+---+   +   +---+   +---+   +   +   +   +---+---+---+---+---+---+   +   +---+   +   +   +   +---+---+   +---+---+   +   +   +---+
|   |                   |   |                       |       |   |           |   |                           |       |           |   |   |       |   |       |           |                                   |                       |       |   |
+   +---+   +   +   +---+---+---+   +---+---+---+   +---+---+   +---+---+   +   +   +   +   +   +   +   +---+   +   +   +   +---+   +---+---+---+---+   +---+   +   +   +---+   +   +---+   +---+---+   +---+   +   +   +---+   +---+   +   +---+
|   |               |   |   |       |           |   |       |               |               |                               |       |                                                           |   |       |                       |           |
+---+   +   +---+   +   +---+---+   +   +   +   +   +   +   +   +   +   +   +   +   +---+   +---+   +   +   +---+---+---+   +   +---+   +---+---+---+   +---+---+   +   +---+   +---+---+   +   +---+   +---+   +---+---+   +   +---+   +---+   +
|   |   |           |   |   |   |   |   |       |               |                               |   |               |       |           |   |   |                   |       |       |   |           |       |                       |           |
+   +   +---+   +---+   +---+   +---+   +   +   +---+   +   +---+   +---+---+   +---+   +---+---+   +---+   +   +---+   +   +   +---+   +   +   +   +   +   +   +---+---+   +---+   +---+---+---+   +---+   +   +   +   +   +   +---+---+   +---+
|               |       |   |           |   |   |           |                               |       |                       |   |               |           |                       |       |   |                       |               |   |   |
+---+---+---+   +---+---+   +   +   +   +   +---+---+   +   +---+---+   +   +   +   +---+   +---+---+   +---+   +   +   +   +   +---+   +---+---+---+   +   +---+   +---+---+---+   +   +---+   +   +   +---+   +---+---+   +   +   +   +   +---+
|       |       |   |       |       |   |   |   |           |   |       |           |               |               |       |   |               |   |                   |                   |               |               |   |               |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+