Фон
Полимин называется L-выпуклый , если это возможно путешествовать из любой плитки любой другой плитки с помощью L-образной траектории, то есть путь , который идет в кардинальных направлениях и меняет направление более одного раза. Например, полиомино 1
с на рисунке
0 0 1 1 1 0
1 1 1 1 0 0
1 1 0 0 0 0
не является L-выпуклым, поскольку оба L-образных пути от нижнего левого 1
до верхнего правого 1
содержат 0
:
0>0>1>1>1 0
^ ^
1 1 1 1 0 0
^ ^
1>1>0>0>0 0
Однако polyomino из 1
s на этом рисунке является L-выпуклым:
0 1 1 1 0 0
1 1 1 1 1 1
0 1 1 0 0 0
вход
Ваш ввод представляет собой двумерный массив битов в собственном формате вашего языка или в виде строки с разделителями новой строки, если в нашем языке отсутствуют массивы. Он гарантированно содержит хотя бы один 1
.
Выход
Ваш вывод должен быть истинным значением, если множество 1
s является L-выпуклым polyomino, и ложным значением, если нет. Эти выходные данные должны быть согласованными: вы должны вывести одно и то же истинное значение для всех L-выпуклых входов и то же самое ложное значение для других. Обратите внимание, что несвязанный набор 1
s (который не является polyomino) приводит к ложному выводу.
Правила и оценки
Вы можете написать либо полную программу, либо функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
Эти тесты также должны работать, если вы поворачиваете или отражаете массивы или добавляете строки 0
s к любым границам.
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