Napisz program lub funkcję, która pobiera wieloliniowy ciąg 0
„s 1
” i „s”. Żadne inne znaki nie będą w ciągu, a ciąg będzie zawsze prostokątny (wszystkie linie będą miały tę samą liczbę znaków), o wymiarach tak małych jak 1 × 1, ale w przeciwnym razie 0
„i 1
” mogą być ustawione dowolnie.
Możesz założyć, że ciąg ma opcjonalny końcowy znak nowej linii, a jeśli chcesz, możesz użyć dwóch różnych drukowalnych znaków ASCII zamiast 0
i 1
.
Drukuj lub zwróci wartość truthy jeśli wszystko z drogi połączone regiony zarówno 0
's i 1
jest w struny są stałe prostokąty , wyjście inny Wartość falsy .
Ścieżka połączony obszar od 0
„s oznacza, że z jednego 0
regionu, wszyscy inni 0
” s może być osiągnięty tylko przez przesunięcie w górę, w dół, w lewo iw prawo, aby inny 0
„s (a nie w ruchu po przekątnej, nie porusza się każdy 1
, a nie wychodząc poza granice łańcucha). Ten sam pomysł dotyczy 1
regionów połączonych ze ścieżką.
Stałe prostokąt o 0
„s oznacza cały obszar prostokąta jest wypełniona 0
” S i nie 1
jest. Ten sam pomysł dotyczy 1
stałych prostokątów.
Najkrótszy kod w bajtach wygrywa. Tiebreaker to wcześniejsza odpowiedź.
(Należy zauważyć, że łańcuch nie zawija się w toroidalnych warunkach brzegowych .)
Przykłady
1) Ten ciąg wejściowy ma 3 regiony połączone ścieżką (2 dla 0
i 1 dla 1
). Tylko prawy dolny 00
obszar jest jednak stałym prostokątem, więc wynik byłby fałszywy.
0011
0111
0100
2) Ten ciąg wejściowy ma 4 regiony połączone ścieżką (2 dla obu 0
i 1
). Wszystkie są solidnymi prostokątami, więc wynik byłby prawdziwy.
0011
0011
1100
3) To wejście ma 2 obszary połączone ścieżką, ale tylko jeden z nich jest stałym prostokątem, więc wynik byłby fałszywy.
00000000
01111110
00000000
4) To wejście ma tylko 1 region połączony ze ścieżką i jest trywialnie prostym prostokątem, więc dane wyjściowe są zgodne z prawdą.
11111111
11111111
11111111
Przypadki testowe
T
Tuż poniżej truthy środki ciąg wejściowy, F
środki falsy.
0
T
1
T
00
T
01
T
10
T
11
T
0000000
T
1111111
T
011100100100101100110100100100101010100011100101
T
00
11
T
01
10
T
01
11
F
00
01
F
11
11
T
110
100
F
111
000
T
111
101
111
F
101
010
101
T
1101
0010
1101
0010
T
1101
0010
1111
0010
F
0011
0111
0100
F
0011
0011
1100
T
00000000
01111110
00000000
F
11111111
11111111
11111111
T
0000001111
0000001111
T
0000001111
0000011111
F
0000001111
1000001111
F
1000001111
1000001111
T
1110100110101010110100010111011101000101111
1010100100101010100100010101010101100101000
1110100110010010110101010111010101010101011
1010100100101010010101010110010101001101001
1010110110101010110111110101011101000101111
F