Ayuda con ejercicio de Python en el sitio Future Engineer

boncru -  
 Helper -

Hola a todos,

Soy profesor y he descubierto Citizen Code Python en el sitio (Amazon) www.futureenginer.fr, el formato con creación de clase virtual es interesante para iniciar el descubrimiento de (pseudo...) Python.

Sin embargo, no logro resolver (en modo Python) el ejercicio Temporada 1 Episodio 7: Los anuncios en menos de 20 líneas.

¿Pueden ayudarme por favor?

Gracias

6 réponses

Helper
 

He encontrado en python, pero no sé cómo hacerlo en blockly.

from robot import * for x in range(4): # 0, 1, 2, 3     derecha() for x in range(4): # 1ª iteración: 4 - x = 4 - 0 = 4 # 2ª iteración: 4 - x = 4 - 1 = 3 # 3ª iteración: 4 - x = 4 - 2 = 2 # 4ª iteración: 4 - x = 4 - 3 = 1     for y in range(3):         recoger()         for z in range(4 - x):             derecha()         soltar()         for z in range(4 - x):             izquierda()     izquierda()
5
boncru
 

Aquí está ya el enunciado (ver en el sitio futureengineer.fr S01E07):    

"Mueve las pantallas publicitarias para insertar una columna vacía entre cada una de las cinco columnas de pantallas. Preciso que hay 4 filas sobre 4 columnas, siendo las 4 primeras las que no se mueven, es decir, 12 pantallas a mover.

Atención: el tamaño de tu programa está limitado a 20 bloques."

Aquí está lo que he hecho, ya hay 17 bloques (la función if con o sin else: toma 4 bloques): las últimas pantallas no están en su lugar:

for loop in range(4): for loop in range(4): derecha() for loop in range(4): izquierda() if alturaColumna() ==3: derecha() for loop in range(3): tomar() derecha() poner() izquierda() izquierda() else: pass derecha()

Con solo 3 bloques más no lo termino, solo logro hacerlo en 24 bloques. Llevo 2 semanas luchando, gracias por su ayuda.

1
SugarSnake
 

Hola,

No sé si lo has encontrado desde entonces, pero aquí tienes una ayuda para la resolución (logré hacerlo en 17 bloques):

Hay que encontrar una manera para que los desplazamientos a la derecha o a la izquierda varíen en cada iteración de un bucle.

Para un bucle:

for loop in range(N):

"loop" varía de 0 a N-1 aumentando de 1 en cada iteración del bucle.

Así, en el primer desplazamiento debes moverte 4 casillas, luego en el segundo 3 casillas, en el tercero 2 casillas, etc.

Comienza por la última columna.

1
Usuario anónimo
 

Hola

sí, siempre que se respeten estos puntos https://www.commentcamarche.net/infos/25899-forum-ccm-mode-d-emploi-demander-de-l-aide-pour-un-exercice/


Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns

0
Usuario anónimo
 

Va a hacer falta un poco de contexto porque no tenía previsto registrarme en este sitio ni hacer todos los ejercicios que preceden para entender de qué se trata.

Supongo que las funciones tomar, poner, derecha, izquierda y alturaColumna son proporcionadas por el juego.

Lo que creo entender es que las 4 primeras sirven para mover un cursor para sostener o dejar un panel, ¿cómo se hace para subir y bajar el cursor? ¿Y si no, para qué sirven?

¿La función alturaColumna devuelve la posición del cursor?

Si un if ocupa 4 "bloques", ¿cuántos bloques ocupa un for? ¿Y cuántos para una línea simple?


Cuando era pequeño, el mar Muerto solo estaba enfermo.
George Burns

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

Hola,

Como dice Whismeril, cuando pides ayuda, cuida de:

  • plantear tu ejercicio de manera que se pueda entender (un poco como se plantearía un problema de matemáticas). Aquí, el enunciado es incomprensible sin imagen.
  • mostrar lo que has hecho.
  • explicar qué es lo que te bloquea.
  • buscar con tu motor de búsqueda favorito si alguien ya ha respondido a la pregunta que te haces.

En este caso, buscando un poco, encontramos este vídeo (parece asemejarse a lo que describes pero no parece ser exactamente el mismo ejercicio).

Buena suerte

0