Bir matris verildiğinde, X oluşturmak için değerlerini yukarı / aşağı veya sola / sağa toplayın, katlayın ve listeyi döndürün. Algoritmayı burada açıklıyorum:
Algoritma
Girişiniz, dilinizin makul sayısal kapasitesi dahilinde tek boyutlu kare tam sayı matrisi olacaktır.
Örnek olarak aşağıdaki matrisi ele alalım:
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
İlk olarak, her sayıyı ana diyagonal veya antidiagonal olan en yakın sayıya ekleyin. Yani, matrisi ana diyagonal ve antidiagonal boyunca dört bölüme ayırın ve sonra her bölümdeki tüm sayıları merkeze doğru toplayın, şöyle:
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
Bu adım aşağıdaki sonucu verir:
1 1
5 5
39
17 15
0 5
Daha sonra, X'i düzleştirip öğeleri ilk önce sol üst ve sol alt en son ile iç içe geçirerek katlarız. Bu, aşağıdaki sonucu verir:
1, 0, 5, 17, 39, 5, 15, 1, 5
Bunu ana diyagonal uzanma ve saat yönünün tersine döndürme olarak hayal edebilirsiniz.
Bu nihai sonuçtur.
Meydan okuma
Bu algoritmayı uygulayın. Standart boşluklar geçerlidir. Tüm makul I / O formatları kabul edilebilir.
Test Durumları
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