Mars Rover: Versión Simple

Instrucciones:

La NASA enviará un grupo de rovers exploradores a una plataforma en Marte.

Esta plataforma, curiosamente rectangular, debe ser recorrida por los rovers para que sus cámaras capturen una imagen completa del terreno circundante y la envíen a la Tierra.

Tu tarea consiste en desarrollar una API que desplace los rovers por la plataforma.

En esta API, la plataforma se representa como una cuadrícula de 10x10, y cada rover tiene un estado que consta de dos partes:

  • Su posición en la cuadrícula (representada por las coordenadas X,Y)
  • La dirección de la brújula (representada por una letra: 'N', 'S', 'E', 'W')
  • La posición inicial del rover es '0:0:N'

Input

El input del programa es una secuencia de comandos de movimiento de un carácter:

  • 'L' y 'R' cambian la dirección del rover. 
  • 'M' mueve el rover una casilla hacia delante en la dirección en la que ya está orientado.

Si un rover llega al final de la plataforma, deberá volver a la primera casilla del extremo opuesto. 

Output

El output del programa es la posición final del rover después de que se hayan ejecutado todos los comandos de movimiento. La posición se representa como unas coordenadas y una dirección, unidas por dos puntos para formar una cadena. Por ejemplo: un rover cuya posición es `2:3:W` está en la casilla (2,3), mirando al oeste.

Ejemplos

  • dado el input 'MMRMMLM', el output debería ser '2:3:N'
  • dado el input 'MMMMMMMMMM', el output debería ser '0:0:N' (debido a que regresa a la casilla del extremo opuesto)


MarsRoverAnimation

Interfaz


No hay restricciones en el diseño de la interfaz pública.

Una interfaz pública para la API podría ser algo así:

 public class MarsRover
  {
     public string Execute(string command);
  }


Reglas:

  • El rover recibe una serie de comandos, por ejemplo'RMMLM', y regresa al punto final después de los movimientos '2:1:N'
  • Si el rover llega al final de la cuadrícula, volverá a la casilla inicial del extremo opuesto.


Crédito: Google Code Archive

Soluciones

Libros


Versión avanzada

Una vez que completes esta kata, ¿por qué no pruebas la kata completa Mars Rover para un reto más avanzado?