es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar un índice específico en una lista.

Estoy intentando hacer un proyecto en el que necesito rastrear la posición final de un robot [0, 0] después de darle coordenadas ilimitadas. Las coordenadas también pueden ser negativas. Por ejemplo, el norte es igual a -10 es lo mismo que el sur es 10. Por lo tanto, las coordenadas están en el orden de norte, este, sur y oeste.
Ejemplos de argumentos: track_robot(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), track_robot(20, 30, 10, 40), track_robot(10, -10, -10, 10)

Este es mi código:
“`

<h1>dar tantas coordenadas como desees al bot y devuelve su posición final.</h1>

<h1>norte, este, sur, oeste</h1>

def track_robot(*steps):
pos = []
north = 0
east = 0
south = 0
west = 0
for coord in steps:
if steps.index(coord) % 2 == 0:
if steps.index(coord) % 4 == 0:
if coord < 0:
south += coord
else:
north += coord
else:
if coord < 0:
north += abs(coord)
else:
south -= coord
else:

“`

Logré manejar el eje y, por lo que el norte y el sur usando sus valores de índice en la variable *steps, pero no pude pensar en una idea de cómo hacerlo para el eje x (este y oeste). Me quedé atascado al final de mi código. ¿Puede ayudarme por favor?

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¡Claro! Aquí te mostramos cómo puedes completar tu código para seguir la posición final del robot:

    def track_robot(*steps):
        north = 0
        east = 0
        south = 0
        west = 0
    
        for i, coord in enumerate(steps):
            if i % 2 == 0:
                if i % 4 == 0:
                    if coord < 0:
                        south += abs(coord)
                    else:
                        north += coord
                else:
                    if coord < 0:
                        north += abs(coord)
                    else:
                        south += coord
            else:
                if (i-1) % 4 == 0:
                    if coord < 0:
                        east += abs(coord)
                    else:
                        west += coord
                else:
                    if coord < 0:
                        west += abs(coord)
                    else:
                        east += coord
    
        final_pos = [west-east, north-south]
        return final_pos
    

    Explicación:

    • Empezamos inicializando las variables norte, este, sur, y oeste a 0.
    • Después, recorremos el parámetro steps usando enumerate, lo que nos da el índice actual i y el valor actual coord.

    • Para cada i par (es decir, para todos los pasos hacia el norte y el sur), verificamos si el coord actual es positivo o negativo, y lo añadimos a la variable apropiada.

    • Para cada i impar (es decir, para todos los pasos hacia el este y el oeste), verificamos si el i anterior era un múltiplo de 4 (lo que significa que nos movíamos hacia el norte o el sur en el paso anterior), y luego añadimos el coord actual a la variable apropiada según su signo.

    • Finalmente, calculamos la posición final restando los pasos hacia el este de los pasos hacia el oeste, y los pasos hacia el sur de los pasos hacia el norte, y devolvemos el resultado como una lista.

    ¡Esperamos que esto ayude!

Comments are closed.