Wejście:
Tablica 2D zawierająca dwie różne (opcjonalne) wartości. Użyję 0 i 1 podczas wyjaśniania zasad. Format wejściowy jest oczywiście elastyczny.
Wyzwanie:
Zera to woda, a te to wyspy. Aby zapewnić samotność, Twoim zadaniem jest otoczyć wszystkie wyspy wodą, wstawiając rzędy i kolumny zer. Nie chcesz marnować wody, więc musisz zminimalizować ilość dodanej wody. Jeśli istnieje więcej niż jedno rozwiązanie, które wymaga takiej samej ilości dodanej wody, należy dodać kolumny wody, a nie wiersze. Pokażę to w przypadkach testowych.
Wynik:
Nowa, zmodyfikowana tablica 2D. Format wyjściowy jest oczywiście elastyczny.
Przypadki testowe:
Wejścia i wyjścia są oddzielone myślnikami. Dodane zera są wytłuszczone. Użyj jednej z odpowiedzi tutaj, jeśli chcesz przekonwertować przypadki testowe na wygodniejsze formaty.
1
---
1
1 1
---
1 0 1
1 1
1 1
---
1 0 1
0 0 0
1 0 1
1 0
0 1
---
1 0 0
0 0 1
Pamiętaj, że dodaliśmy kolumnę zer, a nie rząd zer. Jest tak, ponieważ liczba niezbędnych zer jest równa i kolumny powinny być preferowane.
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
---
1 0 0 0 1
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 1 0 1 0
Pamiętaj, że dodaliśmy wiersze, a nie kolumny, ponieważ wymaga to najmniejszej liczby dodatkowych zer.
0 0 1 0 0
0 1 1 1 0
---
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 1 0
Wymagało to zarówno kolumn, jak i wiersza.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Lepiej dodać dwie kolumny niż jeden rząd, ponieważ wymaga mniej wody.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Lepiej dodać dwa rzędy niż jedną kolumnę, ponieważ wymaga mniej wody.
źródło
Odpowiedzi:
Galaretka , 37 bajtów
Wypróbuj online!
Funkcja zwracająca tablicę 2D liczb całkowitych. Zauważ, że naturalnie na liście singletonów Jelly wyświetla się jako jej wartość, dlatego
G
służy do formatowania wyjścia.Program działa w czasie wykładniczym, ale jak dotąd nie mogłem wymyślić żadnego algorytmu czasu wielomianowego. Wykorzystuje
Ƥ
funkcję dyadyczną, która ta funkcja stanowi wyzwanie po wyzwaniu.źródło
Python 2 ,
374346340339323317 bajtówWypróbuj online!
źródło
[:]
można usunąć bez wpływu na wynik.