Bạn sẽ nhận được một ma trận vuông các số nguyên M và một số nguyên dương n , nhỏ đúng hơn kích thước của M . Nhiệm vụ của bạn là để tạo ra tất cả vuông tiểu ma trận của M kích thước n .
Theo mục đích của thử thách này, một vuông tiểu ma trận là một nhóm các liền kề các hàng và cột chứa trong M .
Định dạng đầu vào / đầu ra
Bạn có thể tự do chọn bất kỳ định dạng hợp lý nào khác, đây chỉ là một số ví dụ.
Đầu vào
- Một ma trận trong loại ma trận gốc (nếu ngôn ngữ của bạn có một)
- Mảng 2D (một mảng gồm các mảng 1D, mỗi mảng tương ứng với một hàng / một cột)
- Mảng 1D (vì ma trận luôn vuông)
- Một chuỗi (bạn đã chọn khoảng cách, nhưng vui lòng không lạm dụng điều này theo bất kỳ cách nào), v.v.
Đầu ra
- Một ma trận ma trận.
- Mảng 4D, trong đó mỗi phần tử (danh sách 3D) đại diện cho các ma trận phụ trên một hàng / cột.
- Một mảng 3D, trong đó mỗi phần tử (danh sách 2D) đại diện cho một ma trận phụ.
- Một đại diện chuỗi của các ma trận con kết quả, v.v.
Thông số kỹ thuật
- Bạn cũng có thể chọn lấy kích thước của M làm đầu vào. Nó được đảm bảo ít nhất là 2 .
- Hướng của đầu ra là tùy ý: bạn có thể chọn xuất các ma trận phụ dưới dạng danh sách các cột hoặc danh sách các hàng, nhưng lựa chọn của bạn phải nhất quán.
- Bạn có thể cạnh tranh trong bất kỳ ngôn ngữ lập trình nào và có thể nhận đầu vào và cung cấp đầu ra thông qua bất kỳ phương thức tiêu chuẩn nào , trong khi lưu ý rằng các lỗ hổng này bị cấm theo mặc định.
- Đây là môn đánh gôn , vì vậy bài nộp ngắn nhất (tính bằng byte) cho mọi ngôn ngữ sẽ thắng.
Thí dụ
Cho n = 3 và M :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Các mô hình con 3x3 có thể là:
+ ------- + + -------- + 1 2 3 4 1 2 3 4 | 1 2 3 | 4 1 | 2 3 4 | + -------- + + -------- + | 5 6 7 | 8 5 | 6 7 8 | | 5 6 7 | 8 5 | 6 7 8 | | 9 10 11 | 12 9 | 10 11 12 | | 9 10 11 | 12 9 | 10 11 12 | + ------- + + -------- + | 13 14 15 | 16 13 | 14 15 16 | 13 14 15 16 13 14 15 16 + -------- + + -------- +
Vì vậy, kết quả sẽ là:
[[[1, 2, 3], [5, 6, 7], [9, 10, 11]], [[2, 3, 4], [6, 7, 8], [10, 11, 12]], [[5, 6, 7], [9, 10, 11], [13, 14, 15]], [[6, 7, 8], [10, 11, 12], [14, 15, 16]]]
Như đã lưu ý ở trên, một đầu ra của:
[[[1, 5, 9], [2, 6, 10], [3, 7, 11]], [[2, 6, 10], [3, 7, 11], [4, 8, 12]], [[5, 9, 13], [6, 10, 14], [7, 11, 15]], [[6, 10, 14], [7, 11, 15], [8, 12, 16]]]
cũng sẽ được chấp nhận, nếu bạn chọn trả về các ma trận phụ dưới dạng danh sách các hàng thay thế.
Các trường hợp thử nghiệm
Các đầu vào M, n :
[[1,2,3],[5,6,7],[9,10,11]], 1
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]], 3
[[100,-3,4,6],[12,11,14,8],[0,0,9,3],[34,289,-18,3]], 2
[[100,-3,4,6],[12,11,14,8],[9,10,11,12],[13,14,15,16]], 3
Và các đầu ra tương ứng (ma trận phụ được đưa ra dưới dạng danh sách các hàng):
[[[1]],[[2]],[[3]],[[5]],[[6]],[[7]],[[9]],[[10]],[[11]]]
[[[1,2,3],[5,6,7],[9,10,11]],[[2,3,4],[6,7,8],[10,11,12]],[[5,6,7],[9,10,11],[13,14,15]],[[6,7,8],[10,11,12],[14,15,16]]]
[[[100,-3],[12,11]],[[-3,4],[11,14]],[[4,6],[14,8]],[[12,11],[0,0]],[[11,14],[0,9]],[[14,8],[9,3]],[[0,0],[34,289]],[[0,9],[289,-18]],[[9,3],[-18,3]]]
[[[100,-3,4],[12,11,14],[9,10,11]],[[-3,4,6],[11,14,8],[10,11,12]],[[12,11,14],[9,10,11],[13,14,15]],[[11,14,8],[10,11,12],[14,15,16]]]
Hoặc, như danh sách các cột:
[[[1]],[[2]],[[3]],[[5]],[[6]],[[7]],[[9]],[[10]],[[11]]]
[[[1,5,9],[2,6,10],[3,7,11]],[[2,6,10],[3,7,11],[4,8,12]],[[5,9,13],[6,10,14],[7,11,15]],[[6,10,14],[7,11,15],[8,12,16]]]
[[[100,12],[-3,11]],[[-3,11],[4,14]],[[4,14],[6,8]],[[12,0],[11,0]],[[11,0],[14,9]],[[14,9],[8,3]],[[0,34],[0,289]],[[0,289],[9,-18]],[[9,-18],[3,3]]]
[[[100,12,9],[-3,11,10],[4,14,11]],[[-3,11,10],[4,14,11],[6,8,12]],[[12,9,13],[11,10,14],[14,11,15]],[[11,10,14],[14,11,15],[8,12,16]]]]