Inspiriert von dieser Stapelüberlauf-Frage .
Die Herausforderung
Eingang
Ein Array von quadratischen Matrizen, die nicht negative ganze Zahlen enthalten.
Ausgabe
Eine quadratische Matrix, die wie folgt aus den Eingangsmatrizen aufgebaut ist.
Sei die Größe jeder Eingangsmatrix und die Anzahl der Eingangsmatrizen.
Betrachten Sie zur Verdeutlichung die folgenden Beispiel-Eingabematrizen ( , ):
3 5
4 10
6 8
12 11
2 0
9 1
- Beginnen Sie mit der ersten Eingabematrix.
- Verschieben Sie die zweite Eingabematrix N - 1 Schritte nach unten und N - 1 Schritte nach rechts, so dass ihr linker oberer Eintrag mit dem rechten unteren Eintrag des vorherigen übereinstimmt.
Stellen Sie sich die zweite verschobene Matrix so vor, als ob sie über der ersten gestapelt wäre. Summieren Sie die beiden Werte bei der übereinstimmenden Eingabe. Schreiben Sie die anderen Werte und füllen Sie die restlichen Einträge mit
0
, um eine Matrix zu erhalten. Bei der Beispieleingabe ist das bisherige Ergebnis3 5 0 4 16 8 0 12 11
Versetzen Sie die verbleibenden Eingabematrizen so, dass ihre obere linke Seite mit der unteren rechten Seite der akkumulierten Ergebnismatrix übereinstimmt. Im Beispiel ergibt sich einschließlich der dritten Eingabematrix
3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
Die Ausgabe ist die Matrix, die nach Einbeziehen der letzten Eingabematrix erhalten wird.
Zusätzliche Regeln und Erläuterungen
- P und sind positive ganze Zahlen.
- Optional können Sie und als zusätzliche Eingänge verwenden.
- Eingabe und Ausgabe können mit jedem vernünftigen Mittel erfolgen . Ihr Format ist wie gewohnt flexibel.
- Programme oder Funktionen sind in jeder Programmiersprache zulässig . Standardlücken sind verboten .
- Kürzester Code in Bytes gewinnt.
Testfälle:
In jedem Fall werden zuerst Eingabematrizen und dann die Ausgabe angezeigt.
, :
3 5 4 10 6 8 12 11 2 0 9 1 3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
, :
3 5 4 10 3 5 4 10
, :
4 7 23 5 39
, :
11 11 8 6 8 12 11 0 4 4 1 13 9 19 11 13 4 2 11 11 8 0 0 6 8 12 0 0 11 0 8 1 13 0 0 9 19 11 0 0 13 4 2
, :
14 13 10 0 13 20 21 3 9 22 0 8 17 3 19 16 14 13 0 0 0 10 13 20 0 0 0 21 12 22 0 0 0 0 25 3 0 0 0 19 16