Addieren Sie bei einer gegebenen Matrix ihre Werte nach oben / unten oder links / rechts, um ein X zu bilden, falten Sie es nach oben und geben Sie die Liste zurück. Ich beschreibe den Algorithmus hier:
Algorithmus
Bei Ihrer Eingabe handelt es sich um eine quadratische Matrix mit ungeraden Zahlenwerten, die der angemessenen numerischen Kapazität Ihrer Sprache entspricht.
Nehmen wir als Beispiel die folgende Matrix:
1 2 3 2 1
0 3 2 3 0
4 2 5 6 3
7 4 7 9 4
0 6 7 2 5
Addieren Sie zunächst jede Zahl zu der nächstgelegenen Zahl auf der Hauptdiagonale oder der Antidiagonale. Das heißt, teilen Sie die Matrix in vier Abschnitte entlang der Hauptdiagonale und der Antidiagonale und addieren Sie dann alle Zahlen in jedem Abschnitt in Richtung der Mitte wie folgt:
1 2 3 2 1
↓ ↓ ↓
0 → 3 2 3 ← 0
↓
4 → 2 → 5 ← 6 ← 3
↑
7 → 4 7 9 ← 4
↑ ↑ ↑
0 6 7 2 5
Dieser Schritt ergibt folgendes Ergebnis:
1 1
5 5
39
17 15
0 5
Dann falten wir es, indem wir das X abflachen und die Elemente mit der linken oberen zuerst und der linken unteren zuletzt verweben. Dies ergibt folgendes Ergebnis:
1, 0, 5, 17, 39, 5, 15, 1, 5
Sie können sich vorstellen, die Hauptdiagonale zu dehnen und sie gegen den Uhrzeigersinn zu drehen.
Dies ist das Endergebnis.
Herausforderung
Implementieren Sie diesen Algorithmus. Es gelten Standardlücken. Alle sinnvollen E / A-Formate sind akzeptabel.
Testfälle
Input
Output
1 2 3 2 1
0 3 2 3 0
4 2 5 6 3
7 4 7 9 4
0 6 7 2 5
1, 0, 5, 17, 39, 5, 15, 1, 5
1 2 3 4 5
5 4 3 2 1
1 3 5 7 9
0 9 8 7 6
6 7 8 9 0
1, 6, 11, 16, 47, 7, 22, 5, 0
1 3 7 4 8 5 3
8 4 7 5 3 8 0
0 6 3 6 9 8 4
2 6 5 8 7 4 2
0 6 4 3 2 7 5
0 6 7 8 5 7 4
8 5 3 2 6 7 9
1, 8, 15, 11, 23, 20, 62, 32, 25, 13, 18, 3, 9