Fondo
Este desafío es en honor a los apsillers , que ganaron la categoría No tan simple como parece en Best of PPCG 2016 con su desafío ¿Puede mi caja de música de 4 notas tocar esa canción? ¡Felicidades!
En su página "Acerca de mí", este usuario tiene un simulador realmente bueno para el autómata celular Game of Life . (En serio, ve a verlo). Por otro lado, la palabra aspillera es español para "flechas iluminadas". A la luz de estos hechos, este desafío se trata de rendijas de flechas en Game of Life.
Juego de vida en flechas
En GoL, representaremos una flecha con un planeador y una pared con una secuencia de bloques . Un planeador único se acerca a la pared desde arriba e intenta volar a través de un espacio en la pared (la luz de las flechas). Su tarea es verificar si el planeador pasa a través de las flechas o se estrella contra la pared.
Entrada
Su entrada es una cuadrícula de bits, que representa una configuración GoL. Puede tomarlo en cualquier formato razonable (cadena multilínea de dos caracteres ASCII imprimibles distintos, lista de cadenas, matriz 2D de enteros, matriz 2D de booleanos, etc.). Para mayor claridad, usaré cadenas multilínea de los caracteres .#
a continuación.
Se garantiza que la entrada tiene varias propiedades. Primero, su altura es 2N para algunos N ≥ 6 , y su ancho es al menos 2N + 2 . La entrada será todo .
s, excepto que en algún lugar de las tres filas superiores hay un planeador, y en las dos filas del medio hay una pared de bloques. El planeador se dirigirá hacia el sudoeste o sudeste, y su posición es tal que si se eliminan las paredes, no pasará por un borde lateral antes de llegar al borde inferior (pero puede llegar a una esquina de la cuadrícula). El planeador está inicialmente separado de los bordes izquierdo y derecho por al menos un paso de .
s. Puede estar en cualquier fase.
El muro consta de bloques, que están separados por una columna de .
s, excepto en un lugar, donde estarán separados por al menos dos columnas de .
s. Al igual que el planeador, los bloques más a la izquierda y a la derecha también están separados de los bordes por un paso de .
s. Siempre habrá al menos un bloque en el borde izquierdo y un bloque en el borde derecho.
Aquí hay un ejemplo de una cuadrícula de entrada válida:
....#......................
..#.#......................
...##......................
...........................
...........................
...........................
.##.##............##.##.##.
.##.##............##.##.##.
...........................
...........................
...........................
...........................
...........................
...........................
Salida
Como se indicó, su tarea es determinar si el planeador se estrella contra la pared o llega al borde sur. Para los propósitos de este desafío, se produce un bloqueo si la configuración ya no consiste en un solo planeador y la pared de bloques, independientemente de lo que ocurra más adelante en la simulación. Los siguientes diagramas muestran las brechas más pequeñas por las que puede atravesar un planeador sureste sin chocar en las dos fases distintas (la condición para los planeadores suroeste es simétrica).
...#...........
.#.#...........
..##...........
...............
...............
##...........##
##...........##
...#...........
....#..........
..###..........
...............
...............
##...........##
##...........##
Si el planeador vuela a través de la pared, deberá generar un valor verdadero y, de lo contrario, un valor falso. Para el ejemplo anterior, la salida correcta es falsa, ya que el planeador se estrellará contra la parte izquierda de la pared.
Para los propósitos de este desafío, puede suponer que si simula GoL en la entrada para 2 * (altura - 3) pasos, el planeador está en la fila inferior en la posición esperada y la pared está intacta, entonces la salida es verdadera .
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana.
Casos de prueba
He recopilado los casos de prueba en un repositorio de GitHub , ya que son bastante grandes. Aquí hay enlaces a los archivos individuales: