Doodle de Google en la codificación de niños: el programa más corto para resolver todos los niveles


26

El garabato de Google de hoy trata sobre la celebración de 50 años de codificación para niños : el objetivo es programar el camino de un conejito para que pueda comer todas las zanahorias. Hay 4 tipos de bloques (ver fotos a continuación):

descripción del bloque

De izquierda a derecha:

  • O("...", k)= pieza naranja: estos son forbucles que se ejecutan k veces el programa "...".
  • G = pieza verde: avance un paso si puede, de lo contrario no haga nada
  • Bl = pieza azul: gire a la derecha y permanezca en el mismo bloque
  • Br = pieza azul: gire a la izquierda y permanezca en el mismo bloque

gran programa

El código anterior se puede escribir como

O(O(G G Br, 4) Bl Bl, 23)

Cada bloque ( G, Bl, Br, O(...,k)) cuenta como 1 unidad, por lo que este programa tiene una longitud 7. Tenga en cuenta que el valor de kse incluye dentro de la 1 unidad de O.

Hay 6 niveles. Para terminar un nivel necesitas comer todas las zanahorias. No es un problema si su programa no se ejecuta completamente, el nivel termina directamente cuando come la última zanahoria.

Suponemos que los 4 tipos de bloques están disponibles en todos los niveles.

Su tarea es encontrar un solo programa que resuelva todos los niveles del juego.
El programa más corto en bloques gana.

Capturas de pantalla de cada nivel:
Nivel 1: Nivel 2: Nivel 3: Nivel 4: Nivel 5: Nivel 6:captura de pantalla de nivel 1
captura de pantalla de nivel 2
captura de pantalla de nivel 3
captura de pantalla de nivel 4
captura de pantalla de nivel 5
captura de pantalla de nivel 6

Respuestas:


24

No es mi respuesta

6 bloques

El usuario Alex encontró una solución más corta, de longitud 6. Puedo confirmar que su solución funciona:

O(O(Br G G, 6) Br, 5)

6 bloques

Intentaron editar esta pregunta para agregar esta respuesta, así que supongo que quieren que se muestre aquí. No me gusta cómo funciona el sistema de reputación por aquí.

El mensaje que dejaron:

El editor no tiene 10 repeticiones, pero tiene una solución de longitud 6. O (O (RGG, 6) R, 5)

Después de unos días, respondieron nuevamente al editar la publicación con: "Gracias por hacer esto. Editar esta fue la única forma en que vi para recibir un mensaje. Estoy feliz de que exista. Siéntanse libres de traerlo a una nueva publicación si aunque quieras ".

Vieja respuesta

7 bloques

O(O(G G Br, 4) G Br, 100)

Se requiere paciencia.

Editar: la imagen estaba equivocada. 7 bloques


¡Buen descubrimiento! Intenté este enfoque, pero no sucedió con esta combinación en particular antes de darme por vencida y buscar mi solución de 9 bloques.
Sparr

2
El usuario Alex afirma haber encontrado una solución más corta.
Jonathan Frech

@JonathanFrech de hecho lo ha hecho! Ese límite de 10 repeticiones es molesto. Entiendo que tenemos que evitar el spam, pero ¿no deberían los nuevos usuarios tener al menos una forma moderada de publicar respuestas? Libertad de expresión y demás.
Reinis Mazeiks

@RM También estaba un poco irritado al ver el problema. Supongo que SE simplemente no está diseñado para respuestas únicas, ya que esto probablemente sea frustrante para Alex ...
Jonathan Frech

1
¿Por qué editó esto en su propia respuesta anterior en lugar de publicarlo como una nueva respuesta?
Sparr

12

En realidad, encontré una solución con 8 bloques

O(O(O(G,4)R,4)GGR,4)

6

Encontrado manualmente, 9 bloques

O(O(GRGLGR,4)L,4)

Comencé con lo obvio O(O(GGR,4)L,4)que resuelve los niveles 1-5 y luego probé algunas variaciones agregando movimientos efectivamente nulos en esos niveles para encontrar uno que completara el nivel 6. El más corto fue un simple derecha-adelante-izquierda en el medio de cada "puente "así que el movimiento hacia adelante no tuvo efecto.


1
Esto es probablemente óptimo, lo que significa que el desafío ya ha terminado. :(
totalmente humano

66
@totallyhuman resulta que la comunidad aún no ha terminado con esto: P
HyperNeutrino

"Lo obvio O(O(GGR,4)L,4)" refuta que la solución más corta para el nivel 4 es 7, como se muestra en el juego.
mik

1
@mik Las soluciones de juego no se basan en cambiar el tamaño del bucle o los movimientos que no hacen nada.
Neil

@totallyhuman que pronostica que estuvo bastante mal :). Incluso más de un año después de la publicación de la pregunta, se encontró una mejor solución.
Surb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.