Thử thách:
Đưa ra một ma trận NxN trong đó và một trong tám 'tùy chọn gấp' riêng biệt, xuất ra một mảng / danh sách 2D với các giá trị được trừ.
Tám tùy chọn gấp là: trái sang phải; phải sang trái; từ trên xuống dưới; dưới lên trên; topleft-to-bottomright; topright-to-bottomleft; từ dưới lên trên; từ dưới lên trên
Từng bước ví dụ:
Ma trận đầu vào:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Với tùy chọn gập từ trên xuống dưới, chúng tôi đưa ra kết quả như sau:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Tại sao? Chúng tôi gấp từ trên xuống dưới. Vì kích thước ma trận là chẵn, chúng tôi không có lớp giữa để giữ nguyên. Các 'thứ hàng sẽ được trừ bằng ' th hàng (có thể đã được 'th hàng cho ma trận chiều lẻ); vì vậy trở thành . Các 'th hàng sau đó sẽ được trừ bằng ' th hàng (có thể đã được 'th hàng cho ma trận chiều lẻ); vì vậy trở thành .[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
[0, 22, -5, 68]
Thay vào đó, với tùy chọn gập từ dưới lên trên để thay thế (với cùng một ma trận đầu vào ở trên), chúng tôi đưa ra kết quả như sau:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
Với các phép trừ gấp sau đây:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Quy tắc thử thách:
- Bạn có thể sử dụng bất kỳ tám chữ cái
[A-Za-z]
hoặc số riêng biệt nào trong phạm vi cho các tùy chọn gấp. Các số hoặc có thể là các tùy chọn phổ biến nhất, nhưng nếu bạn muốn sử dụng các số khác nhau trong phạm vi cho một số tính toán thông minh, vui lòng thực hiện. Vui lòng cho biết các tùy chọn gấp mà bạn đã sử dụng trong câu trả lời của bạn. - Ma trận đầu vào sẽ luôn là ma trận NxN vuông, do đó bạn không phải xử lý bất kỳ ma trận NxM hình chữ nhật nào. cũng sẽ luôn có ít nhất 2, vì ma trận trống hoặc 1x1 không thể được gấp lại.
- Đầu vào của ma trận sẽ luôn chứa các số không âm trong phạm vi (do đó, các số trong đầu ra sẽ nằm trong phạm vi ).
- Với nếp gấp (chống) theo đường chéo hoặc gấp theo chiều dọc / chiều ngang lẻ, 'lớp giữa' sẽ không thay đổi.
- I / O là linh hoạt. Có thể là một mảng 2D / danh sách các số nguyên; có thể được trả lại hoặc in dưới dạng một chuỗi giới hạn không gian và dòng mới; bạn có thể sửa đổi ma trận đầu vào và thay thế các số nên đi cùng
null
hoặc một số nằm ngoài[-999, 999]
phạm vi để cho biết chúng đã biến mất; Vân vân.
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng.
Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'. - Quy tắc chuẩn áp dụng cho câu trả lời của bạn với quy tắc I / O mặc định , vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, chương trình đầy đủ. Cuộc gọi của bạn.
- Lỗ hổng mặc định bị cấm.
- Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn (ví dụ TIO ).
- Ngoài ra, thêm một lời giải thích cho câu trả lời của bạn rất được khuyến khích.
Các trường hợp thử nghiệm:
Ma trận đầu vào 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
Ma trận đầu vào 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
hoặc bất kỳ số nguyên nào trong phạm vi [-999,999]
, vì vậy thứ tự không thành vấn đề. Và xin lỗi, nhưng bạn phải xuất ra nếp gấp chính xác dựa trên đầu vào, vì vậy việc xuất ra tất cả tám không được phép.