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,

    • 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. 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. ¡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