# Forgetful Prisoner

Simple+
English

Consider The Dark Labyrinth to have been your training before taking on this challenge, young grasshopper. Once again, you find yourself in a labyrinth. It's dark and the batteries in your flashlight have died. Due to your preparedness, you have in your possession an ultrasound scanner which can define the depth of passages in four directions. If you think that this will solve all your problems, then we have some news for you. You can not remember anything and use the scanner memory card. But it has an extremely limited capacity and can only remember 100 bits between runs.

The labyrinth is 12x12 cells and surrounded by walls on all sides. Keep in mind, you are surrounded by darkness, so be careful to not run into a wall. This is a "multicall" mission and as such, your function will be called until you have solved the maze or run out of moves. For each iteration you receive a dictionary with information about the distances of walls in four directions: "N" - North, "S" - South, "W" - West and "E" - East. For example: if a neighbour cell is wall, then the distance is 0. You will see the exit only when you enter the exit cell.

The second function argument is a "memory" number. For each iteration we restart the environment, thus you cannot store data in global variables. Memory numbers are 100 bit, so they can range from 0 (including) to 2 100 (excluding).

For each iteration your function should return one or several actions as a string with directions and a memory number. Actions are described as directions: "N" - North, "S" - South, "W" - West and "E" - East. For example: the string "NWS" describes a sequence of three moves. The memory number is an integer 0 ≤ n < 2**100. This number will be given in your function in the next iteration. You run too fast so you shouldn’t make a move that would have you walk into a wall. To make things interesting, you are limited to 300 moves (not iterations).

Input: Two arguments. Scanner results as a dictionary and the memory number as an integer.

Output: A tuple or a list with the action string and the memory number.

How it is used: This concept is an exploration mechanism with restrictions. Build upon the concepts from the Dark Labyrinth to solve this challenge.

Precondition: The labyrinth are surrounded by walls.
len(maze) == 12
all(len(row) == len(maze) for row in visible)

Special Thanks by [htamas] for the mission idea!

26
Settings
Code:
Other:
Invalid hot key. Each hot key should be unique and valid
Hot keys:
•  to Run Code: to Check Solution: to Stop:
CheckiO Extensions

CheckiO Extensions allow you to use local files to solve missions. More info in a blog post.

In order to install CheckiO client you'll need installed Python (version at least 3.8)

Install CheckiO Client first:

`pip3 install checkio_client`

`checkio --domain=py config --key=`

Sync solutions into your local folder

`checkio sync`

(in beta testing) Launch local server so your browser can use it and sync solution between local file end extension on the fly. (doesn't work for safari)

`checkio serv -d`

Alternatevly, you can install Chrome extension or FF addon

`checkio install-plugin`
`checkio install-plugin --ff`
`checkio install-plugin --chromium`

Read more here about other functionality that the checkio client provides. Feel free to submit an issue in case of any difficulties.

Pair Programming (Beta-version)

Welcome to Pair Programming! Engage in real-time collaboration on coding projects by starting a session and sharing the provided unique URL with friends or colleagues. This feature is perfect for joint project development, debugging, or learning new skills together. Simply click 'Start Session' to begin your collaborative coding journey!

Waiting for Pair Programming to start...

You are trying to join a pair programming session that has not started yet.

Please wait for the session creator to join.

Waiting for Pair Programming to reconnect...

It looks like the creator of the pair programming session closed the editor window.

It might happen accidentally, so that you can wait for reconnection.