---
title: "Mars Rover: Versión Simple"
description: Refuerza tus coding skills, mejora tu capacidad para resolver problemas de codificación y aprende de las kata compartidas por los craftspeople de Codurance
---

[Katas ](https://www.codurance.com/es/katas)

# [Mars Rover: Versión Simple](https://www.codurance.com/es/katas/mars-rover-version-simple)

 Escrito por [Lee Sanderson](https://www.codurance.com/es/katas/author/lee-sanderson) | 28-dic-2022 15:34:59

## 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)

## 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](https://code.google.com/archive/p/marsrovertechchallenge/)

## Soluciones

- [Typescript](https://github.com/codurance/simple-mars-rover-ts) por [José Wenzel](https://www.codurance.com/publications/author/jos%C3%A9-pablo-wenzel)

### Libros

- [Head First Design Patterns](https://www.oreilly.com/library/view/head-first-design/0596007124/) por Eric Freeman et al.
- [Understanding the Four Rules of Simple Design](https://leanpub.com/4rulesofsimpledesign) por Corey Haines

### Versión avanzada

Una vez que completes esta kata, ¿por qué no pruebas la kata completa [Mars Rover](https://www.codurance.com/katalyst/mars-rover) para un reto más avanzado?

[Ver post completo](https://www.codurance.com/es/katas/mars-rover-version-simple)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Lee Sanderson"
  },
  "dateModified" : "2023-04-14T11:40:05.204Z",
  "datePublished" : "2022-12-28T15:34:59Z",
  "headline" : "Mars Rover: Versión Simple",
  "image" : {
    "@type" : "ImageObject",
    "height" : 630,
    "url" : "https://3042464.fs1.hubspotusercontent-na1.net/hubfs/3042464/Katalyst/Thumbnails/Katalyst_Thumbnail_Simple-Mars-Rover.jpg",
    "width" : 1200
  },
  "mainEntityOfPage" : "https://www.codurance.com/es/katas/mars-rover-version-simple",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Katas"
  }
}
```