Otrzymujesz macierz kwadratową o szerokości , zawierającą liczby kwadratowe .
Twoim zadaniem jest sprawienie, by wszystkie liczby kwadratowe „eksplodowały”, aż wszystkie znikną. Musisz wydrukować lub zwrócić ostatnią matrycę.
Dokładniej:
- Poszukaj najwyższego kwadratu w matrycy.
- Poszukaj jego najmniejszego sąsiadującego sąsiada (poziomo lub pionowo i bez owijania się).
- Wymienić z i zastąpić z .
Powtarzaj proces od kroku 1, aż w matrycy nie będzie już kwadratu.
Przykład
Matryca wejściowa:
Najwyższy kwadrat wybucha na dwie części i łączy się z najmniejszym sąsiadem, który staje się:
Najwyższy kwadrat eksploduje i łączy się z najmniejszym sąsiadem :
Najwyższy kwadrat wybucha i łączy się z najmniejszym sąsiadem :
Jedyny pozostały kwadrat eksploduje i łączy się z najmniejszym sąsiadem :
Nie ma już kwadratu, więc skończyliśmy.
Zasady
- Gwarantowana macierz wejściowa ma następujące właściwości:
- na każdym kroku najwyższy kwadrat zawsze będzie niepowtarzalny
- na każdym kroku najmniejszy sąsiad najwyższego kwadratu zawsze będzie wyjątkowy
- sekwencja nie będzie się powtarzać wiecznie
- Początkowa matryca może zawierać , ale nie musisz się martwić o zrobienie wybuchnie, ponieważ nigdy nie będzie ona najwyższa lub jedynym pozostałym kwadratem.
- We / wy można przetwarzać w dowolnym rozsądnym formacie
- To jest golf golfowy
Przypadki testowe
Input : [[16,9],[4,25]]
Output: [[24,6],[20,5]]
Input : [[9,4],[1,25]]
Output: [[3,12],[5,5]]
Input : [[625,36],[196,324]]
Output: [[750,540],[14,252]]
Input : [[1,9,49],[1,4,1],[36,25,1]]
Output: [[3,6,7],[6,2,7],[6,5,5]]
Input : [[81,4,64],[16,361,64],[169,289,400]]
Output: [[3,5472,8],[624,323,1280],[13,17,20]]
Input : [[36,100,1],[49,144,256],[25,49,81]]
Output: [[6,80,2],[42,120,192],[175,21,189]]
Input : [[256,169,9,225],[36,121,144,81],[9,121,9,36],[400,361,100,9]]
Output: [[384,13,135,15],[24,1573,108,54],[180,11,108,6],[380,209,10,90]]
Input : [[9,361,784,144,484],[121,441,625,49,25],[256,100,36,81,529],[49,4,64,324,16],[25,1,841,196,9]]
Output: [[171,19,700,4032,22],[11,210,525,7,550],[176,60,6,63,23],[140,112,1152,162,368],[5,29,29,14,126]]
You must print or return the final matrix.
Czy zamiast tego mogę zmodyfikować macierz wejściową?Odpowiedzi:
R ,
301287277274222217195186178 178174 bajtówNic szczególnie kreatywnego, w tym zerowe buforowanie elementów peryferyjnych macierzy wejściowej, wcześniejsza wersja ulepszona później przez Robina:
Wypróbuj online
Wykorzystując sekwencję liczb jako swój wpis, a tym samym usuwając wywołanie funkcji, Nick Kennedy wcześniej zarządzał 186-bajtową wersją algorytmu w następujący sposób (z -10 bajtami przez Robina ):
unikanie definicji funkcji (rekurencyjnej) oraz innych dobrych korzyści.
Wypróbuj online
źródło
Ruby ,
140135 bajtówPobiera płaską listę jako dane wejściowe, tworzy płaską listę.
Wypróbuj online!
Wyjaśnienie:
źródło
Python 2 , 188 bajtów
Wypróbuj online!
Pełny program Pobiera dane wejściowe i drukuje jako płaską listę.
źródło
Perl 6 , 236 bajtów
Wypróbuj online!
źródło
MATL ,
4948 bajtówWypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Jak to działa
źródło
JavaScript (ES6),
271259250245 bajtówDzięki Luisowi Felipe De Jesus Munoz za −14 bajtów!
Wyjaśnienie:
źródło
C # (interaktywny kompilator Visual C #) , 220 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 224 bajty
Wypróbuj online!
źródło
JavaScript (Node.js) , 157 bajtów
Wypróbuj online!
-14 bajtów dzięki @Arnauld, który również napisał fajną uprząż testową :)
Anonimowa funkcja, która przyjmuje 1-wymiarową tablicę jako dane wejściowe i parametr długości określający liczbę, jeśli kolumny / wiersze.
Wejście curry jest określone jako
f(array)(length)
.źródło
Java 8,
299297 bajtówZmienia macierz wejściową zamiast zwracać nową, aby zapisać bajty.
Wypróbuj online.
Wyjaśnienie:
źródło
Galaretka ,
7067 bajtówWypróbuj online!
Jestem pewien, że można to zrobić o wiele krócej, ale uważam to za trudniejsze niż się wydawało. Wyjaśnienie do naśladowania, gdy spróbuję lepiej grać w golfa.
Pełny program, który pobiera listę liczb całkowitych odpowiadających macierzy kwadratowej i zwraca listę liczb całkowitych reprezentujących ostateczną rozłożoną macierz. L
źródło