As I promised, this challenge was going to be quite more difficult. Here you have the solution:

The file we created is a program which receives data via the standard input and prints data via the standard output. The program is a generator of random 50×50 labyrinths and in order to solve it you have to create a program which, by communicating with it, automatically exits the labyrinth; obviously, the labyrinth is not visible.

The players can move to the North, South, East and West, as well as diagonally (Northeast, Southeast, etc…) and can ask for their position. The reversers have to guess which commands are necessary to move in one or other position and to ask in which position they are.

By the way, the generator of labyrinths is “imperfect”: a labyrinth may have a solution or may not. However, once you are in the protocol, you can calculate your exact position in the labyrinth and you can ask for a new labyrinth if you think that the labyrinth you are in has no exit.

Additionally, it has some other problems:

1.- If the players make 6 consecutive mistakes, the game is over.
2.- If the players enter a wrong character, the game is over.
3.- From a certain row on, random “fire” can appear. If the players don’t change their position, that is, if the movement they made is wrong, they will “burn” themselves, and obviously the game will be over.

Well, this time we’ve received only 22 answers, and the winner of the 250€ Amazon gift card, who was the first to solve the challenge correctly, is:

Kaspars Osis

And the winners of the AV license:

William Whistler
Matthew Hinson
Vladimir Gneushev
bbuc

Thank you all for participating. Tomorrow, I will publish the last challenge, with which you can get another Amazon gift card, this time valued at 450€.

Tal y como prometí, este reto ha sido bastante más complicado. La solución es la siguiente:

El fichero que creamos es un programa que recibe datos por la entrada estándar e imprime datos por la salida estándar. El programa es un generador de laberintos de 50×50 aleatorios y para solucionarlo hay que hacer un programa que comunicándose con este, salga del laberinto automáticamente; por supuesto el laberinto no es visible.

El jugador puede moverse en las posiciones norte, sur, este y oeste, así como en diagonal (noroeste, sudeste, etc…) y preguntar por su posición. El reverser tiene que averiguar cuáles son los comandos para que se mueva en una u otra posición y preguntar en que posición está.

El generador de laberintos es "imperfecto", a propósito: un laberinto puede tener o no solución. Sin embargo, dentro del protocolo puedes averiguar tu posición exacta en el laberinto y puedes pedir que se genere un nuevo laberinto si consideras que el laberinto en el que estás no tiene salida.

Además tiene algunas otras pegas:

1.- Si el jugador se equivoca 6 veces seguidas, acaba el juego.
2.- Si el jugador escribe un solo carácter mal, acaba el juego.3.- A partir de cierta fila, puede aparecer "fuego" aleatorio. Si no se mueve de posición, es decir, si el movimiento que hace es erróneo, se "quemará" y, claro, acaba el juego.

Bueno, esta vez sólo hemos recibido 22 respuestas, y el ganador de la tarjeta de regalo de Amazon de 250€, que fue el primero en resolver correctamente el reto, ha sido:

Kaspars Osis

Y los ganadores de la licencia de antivirus:

William Whistler
Matthew Hinson
Vladimir Gneushev
bbuc
 
Gracias a todos por participar. Mañana publicaré el último reto, con el que podreis ganar otra tarjeta de regalo de Amazon, esta vez valorada en 450€.