tło
Mam kilka starych i ziarnistych czarno-białych zdjęć. Niektóre z nich przedstawiają pnącza wspinające się na ścianie, inne nie - Twoim zadaniem jest sklasyfikowanie ich dla mnie.
Wejście i wyjście
Twój wkład to prostokątna tablica 2D bitów A , podana w dowolnym dogodnym formacie. Nie będzie pusty, ale nie ma gwarancji, że zawiera zarówno 0, jak i 1. Tablica przedstawia winorośl, jeśli spełnione są następujące warunki:
- Dolny rząd A zawiera co najmniej jeden 1. Są to korzenie winorośli.
- Każda 1 w A jest połączona z dolnym rzędem ścieżką 1s, która prowadzi tylko w lewo, w prawo i w dół (nie w górę i nie po przekątnej). Te ścieżki są gałęziami winorośli.
Twój wynik jest spójną wartością prawdy, jeśli dane wejściowe przedstawiają winorośl, a spójną wartością fałszu w przeciwnym razie.
Przykłady
Ta tablica przedstawia winorośl:
0 0 1 0 0 1
0 1 1 0 0 1
0 1 0 1 1 1
1 1 0 1 0 1
0 1 1 1 0 1
0 0 1 0 1 1
Ten wkład nie przedstawia winorośli, ponieważ na środku prawej granicy jest 1, który nie jest połączony z korzeniami przez gałąź:
0 0 0 1 1 0
0 1 0 1 1 1
0 1 0 1 0 1
0 1 1 1 1 0
0 0 1 1 0 1
Tablica all-0 nigdy nie przedstawia winorośli, ale tablica all-1 zawsze tak jest.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
Prawdziwe dane wejściowe:
1
0
1
1
01
11
0000
0111
1100
1001
1111
1111
1111
1111
001001
011001
010111
110101
011101
001011
1011011
1001001
1111111
0100000
0111111
1111001
1001111
1111101
0000000
0011100
0010100
0011100
0001000
1111111
0001000
0011100
0010100
0010100
Fałszywe dane wejściowe:
0
1
0
10
01
000
000
000
011
110
000
111111
000000
101011
111001
010010
001000
000010
110001
001100
111111
110101
010011
111011
000110
010111
010101
011110
001101
11000000
10110001
10011111
11110001
01100011
00110110
01101100
01100001
01111111