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):
De izquierda a derecha:
O("...", k)
= pieza naranja: estos sonfor
bucles que se ejecutan k veces el programa"..."
.G
= pieza verde: avance un paso si puede, de lo contrario no haga nadaBl
= pieza azul: gire a la derecha y permanezca en el mismo bloqueBr
= pieza azul: gire a la izquierda y permanezca en el mismo bloque
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 k
se 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:
fuente
En realidad, encontré una solución con 8 bloques
fuente
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.fuente
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.