Reglas del juego
robotin.png

Robotín está inspirado en el glorioso juego Light Bot. Se lo recomendamos.

Objetivo del juego

El objetivo del juego es guiar al robot por el tablero y hacer que encienda todas las luces usando la menor cantidad posible de memoria y/o tiempo.

Lenguaje

Las instrucciones que entiende el robot son acciones directas, llamadas a subrutina y condicionales.
También se pueden poner comentarios entre paréntesis; el robot no los tendrá en cuenta.
Los signos de puntuación, junto con el espacio en blanco, solamente sirven para separar las instrucciones (excepto el ':' usado en las subrutinas).

Acciones directas

Estas son las acciones que Robotín puede llevar a cabo físicamente:

a avanza una casilla hacia adelante
d gira hacia la derecha
i gira hacia la izquierda
e enciende (o apaga) la luz sobre la cual está

Ejemplo:

(avanza tres lugares, gira a
la derecha, y avanza dos más)
a a a d a a

Subrutinas

Para minimizar el uso de memoria, las subrutinas son imprescindibles.
Cualquier palabra o número que no sea una instrucción será interpretado como un llamado a subrutina. El hilo de ejecución irá directamente al código que se encuentre tras la etiqueta correspondiente, que será la misma palabra con el caracter ':' agregado al final.

Ejemplo:

a a d, triple, vuelta.
triple: vuelta, vuelta, vuelta.
vuelta: d a a.

En este caso, triple y vuelta son dos subrutinas.

Condicionales

Los condicionales evalúan cierta pregunta referida a la casilla apuntada por el robot en ese momento. Si la respuesta es sí, la ejecución continúa normalmente; si la respuesta es no, la instrucción inmediata siguiente a la condición es salteada. Las expresiones condicionales son:

p? ¿veo una pared?
np? ¿no veo una pared?
le? ¿veo una luz encendida?
nle? ¿no veo una luz encendida?
la? ¿veo una luz apagada?
nla? ¿no veo una luz apagada?

Los límites del tablero son vistos como paredes.

Los condicionales sólo son usados por los jugadores seducidos por el lado oscuro. Permiten hacer programas más eficientes, pero hacen el código menos elegante.

Modos de juego

Hay básicamente dos modos de juego, pensados para dos estilos diferentes de programación.

En el modo normal el robot terminará cuando el hilo de ejecución termine. Es el modo elegido por los jugadores de bien.

En el modo inmediato, el robot se detendrá en el momento en que todas las luces están encendidas. Es otra opción elegida por los jugadores seducidos por el lado oscuro. Es menos elegante, pero permite lograr una buena performance.
En este modo pueden hacerse programas basados en recursión ilimitada (aunque hay un límite razonable para la cantidad de llamados recursivos).

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License