Ejercicio de ayuda en Python en el sitio Citizen Code

Resuelto
Eriito Mensajes publicados 1 Fecha de registro   Estado Membre Última intervención   -  
lienalo 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

mamiemando Mensajes publicados 33537 Fecha de registro   Estado Modérateur Última intervención   7 927
 

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
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Modérateur Ú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
yg_be Mensajes publicados 23437 Fecha de registro   Estado Contributeur Última intervención   Ambassadeur 1 587
 

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

0
lienalo Mensajes publicados 1 Fecha de registro   Estado Membre Ú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