Ejercicio de ayuda en Python en el sitio Citizen Code

Resuelto

Hola,

Estoy atascado en este ejercicio:

Como pueden ver, debo terminar en 25 líneas con los siguientes comandos:

  • derecha()
  • izquierda()
  • tomar()
  • dejar()
  • bucle for en rango ()

Pero en este momento, solo logro organizar la columna 2 con el siguiente código que tiene 24 líneas:

from robot import * derecha() for loop in range(4):     tomar()     izquierda()     dejar()     derecha() tomar() for loop in range(4):     derecha() dejar() for loop in range(5):     izquierda() for loop in range(4):     tomar()     derecha()     dejar()     izquierda() for loop in range(5):     derecha() tomar() for loop in range(4):     izquierda() dejar()

¿Pueden ayudarme a entender dónde estoy cometiendo un error? Gracias.

4 respuestas

  1. Moderador

    hola

    ¿podrías detallarnos un poco tu código?

    ¿qué hacen las diferentes instrucciones tomar izquierda derecha poner?

    ¿a qué hacen referencia los valores 4 y 5 que utilizas en tus bucles?


    .
    Atentamente,
    Jordane

    1. Moderador

      Hola,

      • Gracias por cuidar la ortografía.
      • Piense en una estrategia antes de codificar (cómo lo haría si tuviera que explicarlo con palabras).
      • Especifique cómo deben ser reemplazados los ladrillos. Si entiendo bien, el castillo se ve de lado, los ladrillos están apilados y quiere intercambiar los ladrillos de la fila inferior con los de la fila superior.
        • ¿Se permite reconstruir el castillo en un lugar diferente al centro de la cuadrícula?
      • También sería necesario especificar qué hace "colocar" (¿se puede soltar un ladrillo en el aire, si colocamos una caja, la pinza vuelve a su lugar, etc...)

      Suponiendo que he entendido bien el ejercicio, la estrategia más simple consiste en:

      Si se permite desplazar el castillo una casilla hacia la izquierda, repetimos el razonamiento trasladando la columna i+1 a la columna i, para cada valor de i que va de 2 a 5 inclusive. Esto se puede escribir como sugiere yg_be con dos bucles for anidados.

      Si no se permite desplazar el castillo una casilla hacia la izquierda, hay que añadir un paso adicional que permita transferir la columna 1 a la columna 5, preservando el orden. De hecho, el ladrillo en la parte superior de la columna 1 es la parte superior del castillo y queremos mantenerlo en la parte alta. Así que lo guardamos a un lado en la columna 6. Transferimos el resto de la columna 1 a la columna 5. Luego, traemos de vuelta el ladrillo restante en la columna 6 a la parte superior de la columna 5.

      Buena suerte

      1. ¡Hola! Personalmente logré hacerlo en solo 25 bloques así:

        from robot import * for loop in range (4): for loop in range (5): derecha() tomar() izquierda() colocar() derecha() for loop in range (4): izquierda() tomar() for loop in range (5): derecha() colocar() izquierda() for loop in range (4): for loop in range (4): izquierda() tomar() for loop in range (4): derecha() colocar() derecha() tomar() izquierda() colocar() 

        Pero potencialmente hay forma de hacerlo en menos bloques