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