Tracks
/
Groovy
Groovy
/
Ejercicios
/
Simulador de robot
Simulador de robot

Simulador de robot

Fácil

Instrucciones

Escribe un simulador de robots.

El centro de pruebas de una fábrica de robots necesita un programa para verificar los movimientos de los robots.

Los robots tienen tres movimientos posibles:

  • girar a la derecha
  • girar a la izquierda
  • avanzar

Los robots se colocan en una cuadrícula infinita hipotética, mirando hacia una dirección en particular (norte, este, sur u oeste), en un conjunto de coordenadas {x,y}, por ejemplo {3,8}, con las coordenadas aumentando hacia el norte y el este.

Luego el robot recibe una serie de instrucciones, y en ese momento el centro de pruebas verifica la nueva posición del robot y hacia dónde apunta.

  • La cadena de letras «RAALAL» significa:
    • Gira a la derecha
    • Avanza dos veces
    • Gira a la izquierda
    • Avanza una vez
    • Gira a la izquierda una vez más
  • Supongamos que un robot empieza en {7, 3} mirando hacia el norte. Entonces, ejecutar esta secuencia de instrucciones debería dejarlo en {9, 4} mirando hacia el oeste.

Propiedades y campos en Groovy

En este ejercicio, quizás notaste que el stub define getters, como getX(), pero las pruebas acceden al valor directamente como .x. Esto se debe a cómo Groovy define las propiedades. Veamos esto en detalle:

  • Un campo es un miembro de una clase, interfaz o trait que se usa para almacenar datos.
  • Una propiedad es una característica visible desde el exterior de una clase.

Puntos clave sobre las propiedades de Groovy:

  • Groovy genera automáticamente getters y setters para los campos que no son privados (o solo un getter si el campo está marcado como final).
  • Se puede acceder a las propiedades por su nombre (como en las pruebas de este ejercicio) y se llamará al getter o al setter de forma transparente.
  • Por convención, Groovy reconocerá las propiedades incluso si no hay un campo de respaldo, siempre que existan getters o setters.

En este ejercicio, solo especificamos los getters requeridos (y, por lo tanto, las propiedades según lo anterior) para exigir una implementación correcta. Eres libre de decidir qué campos (y sus tipos) son los más adecuados para tu solución.

Si quieres explorar más a fondo el tema de los campos y las propiedades, consulta el Capítulo 3.3. Campos y propiedades en la documentación de Groovy.


Fuente

Inspirado en una pregunta de entrevista en una empresa famosa.
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Groovy Exercism

¿Todo listo para empezar Simulador de robot?

Regístrate en Exercism para aprender y dominar Groovy con 66 ejercicios y mentoría humana real, todo gratis.