Herausforderung:
Ausgehend von einer NxN-Matrix, in der und eine von acht verschiedenen 'Faltungsoptionen' , wird ein 2D-Array / eine 2D-Liste mit den subtrahierten Werten ausgegeben.
Die acht Faltoptionen sind: von links nach rechts; rechts nach links; oben nach unten; unten nach oben; von oben nach unten rechts; von rechts nach links; von links nach rechts; von unten nach oben.
Schritt für Schritt Beispiele:
Eingabematrix:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Mit der Faltoption von oben nach unten geben wir Folgendes als Ergebnis aus:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Warum? Wir falten von oben nach unten. Da die Matrixdimensionen gleichmäßig sind, müssen wir keine mittlere Ebene beibehalten, wie sie ist. Die -te Zeile wird von der -ten Zeile subtrahiert (wäre -te Zeile für ungeradzahlige Matrizen gewesen); so wird . Die -te Zeile wird dann von der -ten Zeile subtrahiert (wäre -te Zeile für ungeradzahlige Matrizen gewesen); so wird .[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
[0, 22, -5, 68]
Mit der Faltoption von rechts nach links unten (mit der gleichen Eingabematrix oben) geben wir stattdessen Folgendes als Ergebnis aus:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
Mit folgenden klappbaren Subtraktionen:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Herausforderungsregeln:
- Sie können acht verschiedene Buchstaben
[A-Za-z]
oder verschiedene Zahlen im Bereich für die . Zahlen oder sind wahrscheinlich die gebräuchlichsten Optionen. Wenn Sie jedoch für einige intelligente Berechnungen unterschiedliche Zahlen innerhalb des Bereichs verwenden möchten, können Sie dies tun. Bitte geben Sie an, welche Falzoptionen Sie in Ihrer Antwort verwendet haben. - Die Eingangsmatrix ist immer eine quadratische NxN-Matrix, sodass Sie keine rechteckigen NxM-Matrizen verarbeiten müssen. wird auch immer mindestens 2 sein, da eine leere oder 1x1-Matrix nicht gefaltet werden kann.
- Die Eingabe der Matrix enthält immer nicht negative Zahlen im Bereich (die Zahlen in der Ausgabe liegen daher im Bereich ).
- Bei der (anti-) diagonalen Faltung oder der vertikalen / horizontalen Faltung mit ungeraden Abmessungen bleibt die mittlere "Schicht" unverändert.
- I / O ist flexibel. Kann ein 2D-Array / eine Liste von ganzen Zahlen sein; Kann als durch Leerzeichen und Zeilenumbrüche getrennte Zeichenfolge zurückgegeben oder gedruckt werden. Sie können die Eingabematrix ändern und die Zahlen ersetzen, die weg sein sollen,
null
oder eine Zahl außerhalb des[-999, 999]
Bereichs, um anzuzeigen, dass sie weg sind. usw. usw.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Eingangsmatrix 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
Eingangsmatrix 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
oder eine beliebige Ganzzahl im Bereich verwenden [-999,999]
, sodass die Reihenfolge keine Rolle spielt. Tut mir leid, aber Sie müssen die richtige Falte basierend auf der Eingabe ausgeben, sodass die Ausgabe aller acht nicht zulässig ist.