Saltar a contenido

Robot

Un robot ha sido diseñado para moverse a lo largo de una cuadrícula, recibiendo como entrada alguna de las letras N, S, E, O, que le ordenan moverse un metro hacia el norte, sur, este, oeste, respectivamente. La letra F le pone fin al movimiento del robot. Escriba un programa que simule el movimiento el robot, leyendo letras ingresadas una por una. Al finalizar el movimiento, debe imprimir la distancia recorrida y la distancia de la ruta óptima (camino más corto posible para llegar al mismo destino).

Suponga que la cuadrícula se encuentra sobre un plano cartesiano, y el robot inicia mirando en dirección N.

Ejemplo

Movimiento: N
Movimiento: E
Movimiento: E
Movimiento: E
Movimiento: S
Movimiento: S
Movimiento: O
Movimiento: O
Movimiento: F
Distancia recorrida: 8 [m] 
Distancia óptima: 2 [m]
Solución
# Posicion inicial 
x = 0
y = 0
# Distancia recorrida por el robot
dist = 0
# Variable para mantener los movimientos
mov = '' # Se inicializa vacia
# Mientras no se ingrese el caracter de detencion
while mov != 'F':
    # Entrada de movimientos
    mov = input('Movimiento: ')
    if mov =='N':
        y += 1
        dist += 1
    elif mov == 'S':
        y -= 1
        dist += 1
    elif mov == 'O':
        x -= 1
        dist += 1
    elif mov == 'E':
        x += 1
        dist += 1
# Utilizamos la distancia de Manhattan ya que nos movemos en una cuadrícula
# Se obtiene con la posicion final con respecto al origen
optima = abs(x) + abs(y)
# Distancias
print('Distancia recorrida:', dist, '[m]')
print('Distancia óptima:', optima, '[m]')