# Spaghetti Codenight ## Introduction Welcome to Spaghetti Codenight! The goal tonight is simple: solve a maze with the worst 💩 code possible! However, there are a few restrictions and minimum requirements your code must meet. While it may look bad, it still needs to be functional! ## Maze Everything is done through `stdout` and `stdin`, but don't panic! We've provided a file that handles all the hard work for you (more about this later). ### Layout Your program will receive the maze through `stdin`. The maze will be random each time in both layout and size! A maze is represented using emojis. A tab character `(\t)` represents a new line in the maze, and the maze ends with a newline character `(\n)`. The maze uses five emojis: 5 different emojis are used - `⬛` A wall. - `⬜` A tile. You can move onto these tiles. - `🟥` A visited tile. These are tiles you've already walked on. - `🍝` You, the player. - `😮` The end of the maze. Think of it like this: You're a delicious plate of spaghetti, moving toward a hungry person. As you move, you spill bolognese sauce, marking the ground red.
Maze example ``` ⬛⬛⬛⬛⬛⬛⬛ ⬛🍝⬜⬛⬜⬜⬛ ⬛⬜⬛⬛⬛⬜⬛ ⬛⬜⬜⬜⬛⬜⬛ ⬛⬛⬛⬜⬜⬜⬛ ⬛⬜⬜⬜⬛😮⬛ ⬛⬛⬛⬛⬛⬛⬛ ```
### Movement You indicate your desired movement by printing a direction to `stdout`. Use the following emojis to move: - `⬆️` Up - `➡️` Right - `⬇️` Down - `⬅️` Left ### End When you reach the end, your program will be automatically terminated, and you’ll receive your score. There's no need to manually check if you've completed the maze! ### Example A very short example
stdin ``` ⬛⬛⬛⬛⬛ ⬛🍝⬜⬜⬛ ⬛⬛⬛⬜⬛ ⬛⬜⬜😮⬛ ⬛⬛⬛⬛⬛ ```
stdout `➡️`
stdin ``` ⬛⬛⬛⬛⬛ ⬛🟥🍝⬜⬛ ⬛⬛⬛⬜⬛ ⬛⬜⬜😮⬛ ⬛⬛⬛⬛⬛ ```
stdout `➡️`
stdin ``` ⬛⬛⬛⬛⬛ ⬛🟥🟥🍝⬛ ⬛⬛⬛⬜⬛ ⬛⬜⬜😮⬛ ⬛⬛⬛⬛⬛ ```
stdout `⬇️`
stdin ``` ⬛⬛⬛⬛⬛ ⬛🟥🟥🟥⬛ ⬛⬛⬛🍝⬛ ⬛⬜⬜😮⬛ ⬛⬛⬛⬛⬛ ```
stdout `⬇️`
You solved the puzzle! Your program gets killed and your receive your score. ## Minimum requirements Your submission must meet these minimum requirements: - The code must be written in Python 🐍. - It must solve the maze. - It must complete the maze within **10 seconds**. Failure to meet these requirements will result in your submission being denied. ## Restrictions There are a few restrictions: - All your code must be contained in a single file. - The following Python packages are not allowed: - `sys` - `time` - `os` - `eval` - `exec` We perform basic checks, so please do not attempt to circumvent these restrictions. Submissions that break the rules will be rejected. ## Submitting your code Go to `https://spaghetti.zeus.gent`. Enter your name and select your code file. If your submission is accepted, you’ll see a GIF showing the result (heads-up, it can take a while)! ## Start The file [maze.py](maze.py) is a starting point for your application. It contains all the required code for handling `stdin` and `stdout`, so you can focus on solving the maze. The code file has comments (🤯) and is self-explanatory. We recommend using the classes and enums defined in [maze.py](maze.py) (or suffer some strange 👻 bugs)! **Good Luck and if you need any help, don't hesitate to ask!**