Dengan matriks, jumlah nilainya naik / turun atau kiri / kanan untuk membentuk X, lipat ke atas, dan kembalikan daftar. Saya jelaskan algoritme di sini:
Algoritma
Input Anda akan berupa matriks persegi bilangan bulat berukuran ganjil dalam kapasitas numerik wajar bahasa Anda.
Mari kita ambil matriks berikut sebagai contoh:
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
Pertama, tambahkan setiap angka ke nomor terdekat yang ada di diagonal utama atau antidiagonal. Yaitu, bagi matriks menjadi empat bagian di sepanjang diagonal utama dan antidiagonal, dan kemudian jumlah semua angka di setiap bagian menuju pusat, seperti:
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
Langkah ini memberikan hasil sebagai berikut:
1 1
5 5
39
17 15
0 5
Kemudian, kita lipat dengan meratakan X dan menjalin elemen dengan kiri atas terlebih dahulu dan kiri bawah terakhir. Ini memberikan hasil sebagai berikut:
1, 0, 5, 17, 39, 5, 15, 1, 5
Anda dapat membayangkan ini sebagai peregangan diagonal utama dan memutarnya berlawanan arah jarum jam.
Ini adalah hasil akhir.
Tantangan
Terapkan algoritma ini. Celah standar berlaku. Semua format I / O yang masuk akal dapat diterima.
Uji Kasus
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