Ejercicio de ayuda en Python en el sitio Citizen Code

Resuelto
Eriito Mensajes publicados 1 Fecha de registro   Estado Miembro Última intervención   -  
lienalo Mensajes publicados 1 Fecha de registro   Estado Miembro Última intervención   -

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. mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 940
     

    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
  2. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     

    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

    0
  3. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
     

    Es un ejercicio de bucles anidados, y no has hecho ninguna anidación.

    0
  4. lienalo Mensajes publicados 1 Fecha de registro   Estado Miembro Última intervención  
     

    ¡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

    0