(Istnieją pokrewne pytania dotyczące nieskończonych piaskowców i znajdowania elementów tożsamości piaskowców .)
Biorąc pod uwagę macierz nieujemnych liczb całkowitych, zwróć macierz o takich samych wymiarach, ale przewrócona :
- Jeśli macierz nie zawiera wartości większych niż 4, zwróć ją.
- Każda „komórka”, która jest większa niż 3, zostaje zmniejszona o 4, a wszystkie bezpośrednio sąsiadujące komórki (powyżej, poniżej, lewej i prawej) są zwiększane, jeśli istnieją.
- GOTO 1.
Przykłady:
0 1 0 0 2 0
2 4 0 -> 3 0 1
0 0 3 0 1 3
1 2 3 2 3 4 2 5 1 4 1 2 0 3 3 0 3 3 0 3 3
4 5 6 -> 2 4 4 -> 4 2 3 -> 0 5 4 -> 3 2 1 -> 3 3 1 -> 3 3 2
7 8 9 5 7 7 2 6 5 4 3 2 0 5 3 1 1 4 1 2 0
(Musisz tylko zwrócić wynik końcowy. Ścieżka, na którą do niego dojdziesz, może różnić się od pokazanej tutaj: nie ma znaczenia, w jakiej kolejności wykonujesz operacje obalenia, wszystkie prowadzą do tego samego wyniku).
W celu uzyskania głębszego wyjaśnienia i pewnej motywacji zobacz ten film Numberphile lub artykuł w Wikipedii na temat modelu Abelian Sandpile .
Zasady:
- Możesz pobierać dane wejściowe i wyjściowe na dowolny ze standardowych sposobów
- Luki są zabronione
- Dane wejściowe i wyjściowe mogą być:
- zagnieżdżona lista:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- prosta lista:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
i kształt - jakiś rodzimy typ macierzy
- ciąg, np
1 2 3\n4 5 6\n7 8 9
- lub cokolwiek innego, co działa w twoim języku.
- zagnieżdżona lista:
- Dane wejściowe i wyjściowe muszą być w tej samej formie
- Dane wejściowe mogą zawierać większe liczby niż te pokazane tutaj, ale rozmiar może być ograniczony przez ograniczenia twojego języka (odpowiedniki MAXINT, jeśli dotyczy)
- Matryca może mieć dowolny kształt (np. 1x1, 2x2, 3x3, 4x4, 2x7, 11x3, ...)
- Nie musisz zajmować się przypadkiem, w którym kształt ma wartość 0xN lub Nx0.
Przypadki testowe
[[2, 5, 4], [8, 6, 4], [1, 2, 3]] -> [[3, 3, 0], [1, 2, 2], [1, 3, 2]]
[[0, 0, 2], [1, 3, 3], [0, 0, 0]] -> [[0, 0, 2], [1, 3, 3], [0, 0, 0]]
[[9, 9, 9], [9, 9, 9], [9, 9, 9]] -> [[1, 3, 1], [3, 1, 3], [1, 3, 1]]
[[4, 5], [2, 3]] -> [[2, 3], [0, 1]]
[[2, 3, 5], [2, 2, 0]] -> [[3, 0, 2], [2, 3, 1]]
[[7]] -> [[3]]