Đưa ra một ma trận, tính tổng các giá trị của nó lên / xuống hoặc trái / phải để tạo thành một X, gấp nó lại và trả về danh sách. Tôi mô tả thuật toán ở đây:
Thuật toán
Đầu vào của bạn sẽ là một ma trận số nguyên có kích thước lẻ trong khả năng số hợp lý của ngôn ngữ của bạn.
Hãy lấy ma trận sau đây làm ví dụ:
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
Đầu tiên, thêm mọi số vào số gần nhất nằm trên đường chéo chính hoặc đường chéo. Đó là, chia ma trận thành bốn phần dọc theo đường chéo chính và đường chéo, sau đó tổng tất cả các số trong mỗi phần về phía trung tâm, như vậy:
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
Bước này cho kết quả như sau:
1 1
5 5
39
17 15
0 5
Sau đó, chúng tôi gấp nó bằng cách làm phẳng X và đan xen các phần tử với phần trên cùng bên trái trước và phần dưới cùng bên trái cuối cùng. Điều này cho kết quả như sau:
1, 0, 5, 17, 39, 5, 15, 1, 5
Bạn có thể tưởng tượng điều này như kéo dài đường chéo chính và xoay nó ngược chiều kim đồng hồ.
Đây là kết quả cuối cùng.
Thử thách
Thực hiện thuật toán này. Tiêu chuẩn áp dụng. Tất cả các định dạng I / O hợp lý đều được chấp nhận.
Các trường hợp thử nghiệm
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