Forgetful Prisoner 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!

Settings
Code:
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

Configure your tool

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.

×
 
 
<< <
> >>
exec

Whats Next?

Free accounts will see Best CheckiO solutions with some delay.
Best Solutions will be opened in
Become Awesome and Don't wait
The next stage is ""
Will be activated in
View More Solutions Random Review Solutions Share your own solution
Go to the next mission Back to the list of missions Back to the map