Ejercicio de ayuda en Python en el sitio Citizen Code
Resueltolienalo Mensajes publicados 1 Fecha de registro Estado Membre Ú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 réponses
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
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
Es un ejercicio de bucles anidados, y no has hecho ninguna anidació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