Wyobraź sobie dwuwymiarową tablicę wartości boolowskich, gdzie 0 oznaczają kwadraty trawy na prostokątnej działce, a 1 oznaczają ogrodzenie.
Napisz funkcję, która akceptuje tablicę 2D jako dane wejściowe i określa, czy możesz podróżować z dowolnego obszaru trawy do dowolnego innego obszaru trawy, używając tylko ruchów północ / wschód / zachód / południe, bez wpadania na płot.
Jeśli jakikolwiek obszar trawy w tablicy jest całkowicie otoczony płotami (co oznacza, że nie można podróżować N / E / W / S, aby dotrzeć do każdego innego obszaru trawy w tablicy), funkcja powinna zwrócić wartość false; w przeciwnym razie powinien zwrócić wartość true.
Poniżej znajdują się dwie przykładowe tablice, których możesz użyć jako danych wejściowych, chociaż twoja funkcja powinna być w stanie obsłużyć nie tylko te, ale dowolną tablicę 2D wartości logicznych:
0 0 0 0 0
0 1 0 0 0
0 1 1 1 1
0 0 0 0 0
0 0 0 1 1
(should return true)
0 1 0 1 0
0 1 1 0 0
0 0 0 0 0
0 0 0 1 0
1 1 1 1 0
(should return false, since the middle 0 in the top row is fully enclosed)
Wygrywa najkrótszy działający kod. Wybiorę zwycięzcę po upływie tygodnia lub nowych zgłoszeń w ciągu 24 godzin.
1 1 1; 1 0 1; 1 1 1? W centrum znajduje się jedna komórka trawiasta. Wizualnie komórka trawy w środku jest całkowicie ogrodzona płotami, ale z twojej definicji tak nie jest.