Introducción
Jonny quiere jugar a Frogger. Sin embargo, no es muy bueno. De hecho, solo intentará avanzar, y solo después de que las plataformas se hayan movido.
Averigua si la rana de Jonny logra llegar al final del camino o si muere en su camino.
Desafío
El programa se recibe como entrada una rejilla Frogger compuesta por 0s y 1s, con el siguiente formato:
- La cuadrícula tendrá un ancho y largo aleatorio, y al menos 3x3
1representa plataformas0representa aguaFrepresenta la posición inicial de la rana- Cada primera y última línea de la cuadrícula estará compuesta solo por
1s, y no se moverá, y la ranaFse colocará al azar en la última línea - Cada capa intermedia siempre se moverá y tendrá un
<o>al final de cada línea que indica si se mueve hacia la izquierda o hacia la derecha
Está permitido reemplazar estos símbolos con los suyos, siempre que sean distintos y especifique los reemplazos en su respuesta.
La entrada puede estar en cualquier formato compatible (cadena con saltos de línea, matriz de cadenas, matriz de caracteres, ...).
Reglas de desafío
- Cada turno, todas las plataformas se moverán una casilla, según la dirección indicada por el signo
<o> - Las plataformas reaparecen en el otro lado de la cuadrícula si se las empuja fuera de la "pantalla"
- Si la rana está en una plataforma en movimiento, se moverá junto con ella
- Después de eso, la rana saltará un cuadrado hacia la fila superior. La rana se moverá cada turno.
- La rana muere si salta al agua (
0) o toca el costado de la cuadrícula junto con una plataforma móvil
Su programa tiene que generar un valor verdadero si la rana sobrevive y un valor falso de lo contrario.
Este es el código de golf , por lo que gana la respuesta más corta en bytes. Se aplican lagunas estándar.
Ejemplos
Ejemplo 1
Entrada
11111
00111>
00101<
1F111
Salida
1
Ejecución
Turno 1:
11111
10011
01010
1F111
11111
10011
0F010
11111
Vuelta 2:
11111
11001
F0100
11111
11111
F1001
10100
11111
Turno 3:
11111
1F100
01001
11111
1F111
11100
01001
11111
Ejemplo 2
Entrada
11111
00100<
00100<
1F111
Salida
0
Ejecución
Turno 1:
11111
01000
01000
1F111
11111
01000
0F000
11111
Vuelta 2:
11111
10000
F0000
11111
11111
F0000
10000
11111
Turno 3:
11111
00001
00001
11111
<o >al final.
0frente, o esperará al siguiente 1? Si puede esperar, ¿avanzará cada vez 1o puede esperar inteligentemente? Es decir, con el caso de prueba 11111 00001< 00011< 11F11, ¿será falsey porque salta al agua ( pastebin de pasos ); será falsey porque se mueve fuera del marco ( pastebin de pasos ); ¿O será sincero porque espera de manera inteligente la segunda plataforma antes de saltar ( pegar pasos )?
0.
<o>así podemos tomar matrices rectangulares como entrada? Por cierto, ¡buen desafío!