Đôi khi, tôi có danh sách các ma trận không đổi trong mã của mình:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
Đó là một cách sử dụng khủng khiếp của bất động sản màn hình. Tôi muốn viết chúng bên cạnh nhau hơn:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Bạn sẽ thấy rằng đây vẫn là một danh sách lồng nhau hợp lệ về mặt cú pháp, nó không còn là hình chữ nhật nữa và nó có cấu trúc rất khác nhau (đặc biệt, nó sẽ sâu hơn mỗi khi tôi thêm một ma trận lớn hơn 1x1). Tuy nhiên, vẫn có thể xây dựng lại danh sách ma trận ban đầu từ danh sách mới này.
Để tôi có thể sử dụng cú pháp này trong tương lai, tôi cần bạn viết một số mã chuyển đổi các mảng được viết theo cách sắp xếp theo chiều ngang thành danh sách ma trận mà chúng đại diện.
Để đảm bảo rằng các câu trả lời không thực hiện khớp mẫu 2D trên bố cục trong mã nguồn, đầu vào sẽ được cung cấp dưới dạng đối tượng mảng hoặc nếu bạn lấy biểu diễn chuỗi, thì nó sẽ không chứa bất kỳ khoảng trắng nào cho biết cách nghĩa đen đã được viết trong mã. Vì vậy, bạn sẽ nhận được một số đầu vào như thế này:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
Và đầu ra phải là mảng sau hoặc biểu diễn chuỗi của nó (một lần nữa, không cần bố trí thêm):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
Đây là phần đầu tiên và dễ dàng hơn trong thử thách hai phần. Trong phần này, bạn có thể giả sử rằng tất cả các ma trận đều là hình vuông và có cùng kích thước và chúng được căn chỉnh chính xác cạnh nhau. Trong phần thứ hai, chúng ta sẽ thư giãn những giả định này.
Quy tắc
Đầu vào sẽ là một danh sách lồng nhau hoặc biểu diễn chuỗi chính tắc của nó (theo ngôn ngữ bạn chọn) và bạn nên xuất kết quả theo cùng định dạng. Kết quả sẽ luôn chứa ít nhất một ma trận và ma trận có thể nhỏ bằng 1x1. Các ma trận sẽ chỉ chứa các số nguyên (đã ký) có giá trị tuyệt đối nhỏ hơn 128.
Bạn có thể viết một chương trình hoặc một chức năng và sử dụng bất kỳ phương pháp tiêu chuẩn nào để nhận đầu vào và cung cấp đầu ra.
Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào , nhưng 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 câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.
Các trường hợp thử nghiệm
Mỗi trường hợp kiểm tra có a) các ma trận danh sách được đặt độc đáo cạnh nhau vì chúng sẽ nằm trong mã (đây không phải là đầu vào của bạn), b) danh sách không được định dạng mà không có khoảng trắng bên ngoài ( đây là đầu vào của bạn), c) sản lượng dự kiến.
Pretty: [ [[0]] ]
Input: [[[0]]]
Output: [[[0]]]
Pretty: [ [[-1]], [[0]], [[1]] ]
Input: [[[-1]],[[0]],[[1]]]
Output: [[[-1]],[[0]],[[1]]]
Pretty: [ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Input: [[[1,0],[[1,0],[[0,1],[[0,-1],[0,1]],[0,-1]],[1,0]],[1,0]]]
Output: [[[1,0],[0,1]],[[1,0],[0,-1]],[[0,1],[1,0]],[[0,-1],[1,0]]]
Pretty: [ [[1, 0, 0], [[ 127, 63, 31], [[1, 0, 0], [[0, 0, 0],
[0, 1, 0], [ 15, 0, -15], [0, 0, 1], [0, 0, 0],
[0, 0, 1]], [ -31, -63, -127]], [0, 1, 0]], [0, 0, 0]] ]
Input: [[[1,0,0],[[127,63,31],[[1,0,0],[[0,0,0],[0,1,0],[15,0,-15],[0,0,1],[0,0,0],[0,0,1]],[-31,-63,-127]],[0,1,0]],[0,0,0]]]
Output: [[[1,0,0],[0,1,0],[0,0,1]],[[127,63,31],[15,0,-15],[-31,-63,-127]],[[1,0,0],[0,0,1],[0,1,0]],[[0,0,0],[0,0,0],[0,0,0]]]
[([1, 0], [0, 1]), ([1, 0], [0, -1]), ([0, 1], [1, 0]), ([0, -1], [1, 0])]
đầu ra hợp lệ cho testcase thứ ba? Đó là danh sách hỗn hợp và tuple.
[([1,0], ([1, 0}, ...
và điều đó sẽ cung cấp cho bạn thông tin bổ sung.