
Mars Rover
Mové rovers por una meseta en Marte
Nivel:Básico
Duración:Larga
Temas:
TDDClean CodeOOPDiseñoPatrones de diseñoSOLID
Enunciado
La NASA va a hacer aterrizar un escuadrón de rovers robóticos en una meseta de Marte.
Los rovers tienen que recorrer esta meseta, que curiosamente es rectangular, para que sus cámaras puedan obtener una vista completa del terreno y mandarla de vuelta a la Tierra.
Tu tarea es desarrollar una API que mueva los rovers por la meseta.
En esta API, la meseta se representa como una grilla de 10x10, y el estado de un rover tiene dos partes:
- su posición en la grilla (representada por un par de coordenadas X,Y).
- la dirección hacia la que mira (representada por una letra:
N,S,EoW).
Requisitos
- Te dan la posición inicial (x,y) de un rover y la dirección (N, S, E, W) hacia la que mira.
- El rover recibe un array de caracteres con comandos.
- Implementá los comandos que mueven el rover hacia adelante/atrás (F, B).
- Implementá los comandos que giran el rover a la izquierda/derecha (L, R).
- Implementá el wrapping en los bordes. Pero ojo, los planetas son esferas. Conectá un borde de x con el otro, así que desde (0,0), x-1 conecta con (9,0), y desde (0,0), y-1 conecta con (0,9).
- Implementá la detección de obstáculos antes de cada movimiento a una celda nueva. Si una secuencia de comandos se encuentra con un obstáculo, el rover avanza hasta el último punto posible, aborta la secuencia y reporta el obstáculo.
Ejemplos
- Dada una grilla sin obstáculos, posición inicial (0, 0) y dirección inicial N, el input
FFRFFLFda como output2:3:N:OK. - Dada una grilla sin obstáculos, posición inicial (0, 0) y dirección inicial N, el input
FFFFFFFFFFda como output0:0:N:OK(por el wrapping). - Dada una grilla con un obstáculo en (0,3), posición inicial (0,0) y dirección inicial N, el input
FFFFda como output0:2:N:ERROR.
Soluciones
Créditos
- Kata-log.com
- Codurance
- Imagen © NASA