Scenariusz
Jadę samochodem samochodem i zaczyna padać deszcz. Krople deszczu spadają losowo na moje okno, a teraz zadaję sobie pytanie, gdzie jest największy połączony mokry teren?
Zadanie
Aby to ułatwić, okno jest podzielone na macierz 10 * 10 kwadratów. Twoim zadaniem jest znalezienie największego połączonego obszaru zrzutu wody w oknie.
Wejście
Istnieją dwa możliwe dane wejściowe, możesz użyć macierzy dwuwymiarowej lub jednowymiarowej. Możesz wybierać między dowolnymi danymi wejściowymi, takimi jak stdin itp.
Przykład:
// 2-dimensional:
[[0,1,0,0,0,0,1,0,0,0],
[0,1,1,0,0,0,0,1,1,0],
[0,1,1,0,0,0,0,1,0,0],
[0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,1,0],
[0,0,0,1,1,0,0,0,1,0],
[0,0,0,1,1,0,0,0,1,0],
[0,0,0,0,0,1,1,0,1,0],
[0,0,0,0,0,1,1,0,1,0],
[0,0,0,0,0,0,0,0,0,0]]
// 1-dimensional
[0,1,0,0,0,0,1,0,0,0,
0,1,1,0,0,0,0,1,1,0,
0,1,1,0,0,0,0,1,0,0,
0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,0,
0,0,0,1,1,0,0,0,1,0,
0,0,0,1,1,0,0,0,1,0,
0,0,0,0,0,1,1,0,1,0,
0,0,0,0,0,1,1,0,1,0,
0,0,0,0,0,0,0,0,0,0]
Wynik
Twój kod musi podawać rozmiar największego połączonego obszaru oraz współrzędne x i y kropli wody należących do tego obszaru w formacie
„Rozmiar: Współrzędne Z: (X1, Y1) (X2, Y2) .. . "
Przykład dla poprzedniego wejścia:
Size: 6 Coordinates: (1,0) (1,1) (2,1) (1,2) (2,2) (1,3)
Kolejność współrzędnych nie ma znaczenia.
Zasady
- Krople wody są połączone, jeśli dotykają się one ortogonalnie
- Połączenia ukośne się nie liczą
- Może być wiele obszarów, a Twój kod musi znaleźć największy
- Puste pole jest reprezentowane jako „0”, a mokre pole jako „1”
- Zamieść swoje rozwiązanie z krótkim objaśnieniem i wynikiem poprzednich danych wejściowych
- Zwycięży najkrótszy kod w ciągu najbliższych 7 dni
- Jeśli są dwa obszary o tym samym rozmiarze, możesz wybrać jeden
