Mars Rover Kata

mars-rover-kata

Descripción

La Mars Rover Kata es un ejercicio de programación basado en la simulación del movimiento de un vehículo rover en la superficie de Marte. La tarea es controlar el rover en un terreno plano y rectangular, siguiendo una serie de comandos para moverse y girar. Es una excelente kata para practicar lógica de control y manipulación de coordenadas.

Reglas del juego

El rover se mueve en una cuadrícula bidimensional, y su posición y orientación se describen mediante coordenadas (x, y) y una dirección (N, S, E, O). Los comandos que se pueden enviar al rover son:

  • L: girar a la izquierda (90 grados).
  • R: girar a la derecha (90 grados).
  • M: mover hacia adelante una unidad en la dirección actual.

El rover se envía a Marte con una posición inicial y una dirección inicial, y se le da una secuencia de comandos para ejecutar.

Objetivo de la kata

El objetivo de esta kata es implementar el control del rover en Marte. Debes escribir una función que tome como entrada la posición inicial del rover, su dirección inicial, y una secuencia de comandos, y devuelva la posición final y la dirección del rover después de ejecutar los comandos.

Instrucciones

  1. Representa la posición del rover como una tupla (x, y) de coordenadas enteras.
  2. Representa la dirección del rover como uno de los caracteres: N (norte), S (sur), E (este), O (oeste).
  3. Implementa una función que reciba la posición inicial del rover, su dirección inicial, y una secuencia de comandos, y que devuelva la posición y la dirección final del rover después de ejecutar los comandos.
  4. Asegúrate de manejar adecuadamente los bordes de la cuadrícula. Puedes suponer que el rover se encuentra en una superficie infinita o que se "envuelve" alrededor de los bordes de la cuadrícula.
  5. Opcionalmente, puedes extender la kata para manejar obstáculos en la superficie de Marte, donde el rover debe detenerse si encuentra uno.

Ejemplo

Supongamos que la posición inicial del rover es (1, 2) con dirección N, y la secuencia de comandos es "LMLMLMLMM". Después de ejecutar los comandos, la posición y dirección del rover pueden ser:

Posición final: (1, 3)
Dirección final: N

Otro ejemplo: posición inicial (3, 3), dirección E, comandos "MMRMMRMRRM":

Posición final: (5, 1)
Dirección final: E

Recursos

Normas y requerimientos sacados de Kata Log (kata-log.rocks/mars-rover-kata)

  • TypeScript

    Solución con TypeScript v1

  • TypeScript

    Solución con TypeScript v2

  • TypeScript

    Solución con TypeScript v3