Sie erhalten eine quadratische Matrix mit der Breite , die quadratische Zahlen .
Ihre Aufgabe ist es, alle quadratischen Zahlen zum Explodieren zu bringen, bis alle verschwunden sind. Sie müssen die endgültige Matrix ausdrucken oder zurücksenden.
Genauer:
- Suchen Sie nach dem höchsten Quadrat in der Matrix.
- Suchen Sie nach dem kleinsten Nachbarn (entweder horizontal oder vertikal und ohne Umlauf).
- Ersetze mit und ersetze mit .
Wiederholen Sie den Vorgang ab Schritt 1, bis die Matrix kein Quadrat mehr enthält.
Beispiel
Eingabematrix:
Das höchste Quadrat zerfällt in zwei Teile von und verschmilzt mit seinem kleinsten Nachbarn , der zu :
Das höchste Quadrat explodiert und verschmilzt mit seinem kleinsten Nachbarn :
Das höchste Quadrat explodiert und verschmilzt mit seinem kleinsten Nachbarn :
Das einzige verbleibende Quadrat explodiert und verschmilzt mit seinem kleinsten Nachbarn :
Es gibt kein Quadrat mehr, also sind wir fertig.
Regeln
- Die Eingabematrix hat garantiert die folgenden Eigenschaften:
- Bei jedem Schritt wird das höchste Quadrat immer eindeutig sein
- Bei jedem Schritt wird der kleinste Nachbar des höchsten Quadrats immer eindeutig sein
- Die Sequenz wird nicht für immer wiederholt
- Die anfängliche Matrix kann enthalten ‚s, aber Sie haben keine Sorgen zu machen über das Bilden explodieren, da sie nie die höchste oder die einzige verbleibende Platz sein wird.
- I / O kann in jedem vernünftigen Format verarbeitet werden
- Das ist Code-Golf
Testfälle
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.
Kann ich stattdessen die Eingabematrix ändern?Antworten:
R ,
301287277274222217195186178174 BytesNichts besonders Kreatives, einschließlich der Null-Pufferung der peripheren Elemente der Eingangsmatrix, eine frühere Version, die später von Robin verbessert wurde:
Probieren Sie es online aus
Nick Kennedy verwendete eine Folge von Zahlen als Eingabe und entfernte damit den Aufruf einer Funktion. Zuvor verwaltete er eine 186-Byte-Version des Algorithmus wie folgt (mit -10 Byte von Robin ):
Vermeiden der Definition einer (rekursiven) Funktion sowie anderer nützlicher Vorteile.
Probieren Sie es online aus
quelle
Ruby ,
140135 BytesNimmt eine flache Liste als Eingabe und gibt eine flache Liste aus.
Probieren Sie es online!
Erläuterung:
quelle
Python 2 , 188 Bytes
Probieren Sie es online!
Volles Programm. Nimmt Eingaben und druckt als flache Liste.
quelle
Perl 6 , 236 Bytes
Probieren Sie es online!
quelle
MATL ,
4948 BytesProbieren Sie es online! Oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
JavaScript (ES6),
271259250245 BytesDanke an Luis felipe De jesus Munoz für −14 Bytes!
Erläuterung:
quelle
C # (Visual C # Interactive Compiler) , 220 Byte
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 224 Bytes
Probieren Sie es online!
quelle
JavaScript (Node.js) , 157 Byte
Probieren Sie es online!
-14 Bytes Danke an @Arnauld, der auch ein schönes Testgeschirr geschrieben hat :)
Anonyme Funktion, die ein eindimensionales Array als Eingabe und einen Längenparameter verwendet, der die Anzahl der Spalten / Zeilen angibt.
Curried-Eingabe ist angegeben als
f(array)(length)
.quelle
Java 8,
299297 BytesÄndert die Eingabematrix, anstatt eine neue zurückzugeben, um Bytes zu sparen.
Probieren Sie es online aus.
Erläuterung:
quelle
Jelly ,
7067 BytesProbieren Sie es online!
Ich bin mir sicher, dass dies viel kürzer gehen kann, aber ich fand das schwieriger, als es zuerst erschien. Erklärung zu folgen, sobald ich versucht habe, es besser zu spielen.
Ein vollständiges Programm, das eine Liste von Ganzzahlen verwendet, die der quadratischen Matrix entsprechen, und eine Liste von Ganzzahlen zurückgibt, die die endgültige aufgelöste Matrix darstellen
quelle