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 1s 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 1a la superior derecha 1contienen 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 1s 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 1s 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 1s (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 0s 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