Antecedentes
Un poliomino se llama L-convexo , si es posible viajar desde cualquier mosaico a cualquier otro mosaico por un camino en forma de L, es decir, un camino que va en las direcciones cardinales y cambia de dirección como máximo una vez. Por ejemplo, el poliomino de 1
s en la figura
0 0 1 1 1 0
1 1 1 1 0 0
1 1 0 0 0 0
no es L-convexo, ya que ambas rutas en forma de L desde la parte inferior izquierda 1
a la superior derecha 1
contienen un 0
:
0>0>1>1>1 0
^ ^
1 1 1 1 0 0
^ ^
1>1>0>0>0 0
Sin embargo, el poliomino de 1
s en esta figura es L-convexo:
0 1 1 1 0 0
1 1 1 1 1 1
0 1 1 0 0 0
Entrada
Su entrada es una matriz 2D de bits en el formato nativo de su idioma, o como una cadena delimitada por una nueva línea si nuestro idioma carece de matrices. Se garantiza que contiene al menos uno 1
.
Salida
Su salida será un valor verdadero si el conjunto de 1
s es un poliomino L-convexo, y un valor falso si no. Estas salidas deben ser consistentes: debe generar el mismo valor verdadero para todas las entradas L-convexas, y el mismo valor falso para otras. Tenga en cuenta que un conjunto desconectado de 1
s (que no es un poliomino) da como resultado una salida falsa.
Reglas y puntuación
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
Estos casos de prueba también deberían funcionar si gira o refleja las matrices, o agrega filas de 0
s a cualquier borde.
False instances
01
10
111
101
111
1101
1111
1110
1100
1000
0011
01100
11110
01110
00110
011000
011110
001111
True instances
1
01
11
010
111
010
001
011
111
11100
11110
01100
01000
011000
011000
111100
111111
001000