tło
Polyomino jest nazywany L-wypukłą , jeżeli jest to możliwe do podróży z dowolnego dachówka do jakiejkolwiek innej płytki przez ścieżką w kształcie litery L, czyli drogi, która przechodzi w kierunkach kardynalnych i zmienia kierunek co najwyżej raz. Na przykład poliomino 1
s na rysunku
0 0 1 1 1 0
1 1 1 1 0 0
1 1 0 0 0 0
nie jest wypukły w kształcie litery L, ponieważ obie ścieżki w kształcie litery L od dolnej lewej 1
do prawej górnej 1
zawierają 0
:
0>0>1>1>1 0
^ ^
1 1 1 1 0 0
^ ^
1>1>0>0>0 0
Jednak poliomino 1
s na tej figurze jest wypukłe w kształcie litery L:
0 1 1 1 0 0
1 1 1 1 1 1
0 1 1 0 0 0
Wejście
Twoje dane wejściowe to tablica 2D bitów w natywnym formacie Twojego języka lub ciąg znaków rozdzielany znakiem nowej linii, jeśli nasz język nie ma tablic. Gwarantuje, że zawiera co najmniej jeden 1
.
Wynik
Twój wynik powinien być prawdziwą wartością, jeśli zbiór 1
s jest L-wypukłym poliomino, i wartością fałszowania, jeśli nie. Te dane wyjściowe muszą być spójne: musisz wygenerować tę samą wartość prawdy dla wszystkich danych wejściowych wypukłych w kształcie litery L i tę samą wartość fałszowania dla innych. Zauważ, że rozłączony zestaw 1
s (który nie jest poliomino) powoduje powstanie fałszowania.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
Te przypadki testowe powinny również działać, jeśli obrócisz lub odzwierciedlisz tablice lub dodasz rzędy 0
s do dowolnych granic.
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