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]')