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 1s 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 1do prawej górnej 1zawierają 0:
0>0>1>1>1 0
^ ^
1 1 1 1 0 0
^ ^
1>1>0>0>0 0
Jednak poliomino 1s 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 1s 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 1s (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 0s 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