Lấy cảm hứng từ một câu hỏi tại Stack Overflow .
Cho một mảng số nguyên không trống xvà một số nguyên dương n, tính tổng của từng khối chiều dài trượtn dọc theo mảng x, điền tròn các giá trị còn thiếu ở bên trái với các giá trị từ bên phải như sau:
- khối đầu tiên chứa mục đầu tiên của x, trướcn-1các mục được dịch chuyển tròn;
- khối thứ hai có các mục đầu tiên và thứ hai x, trướcn-2các mục được dịch chuyển tròn; vân vân
Mảng đầu ra ycó cùng kích thước với x. Có thể nvượt quá độ dài xvà sau đó các giá trị xđược sử dụng lại nhiều lần .
Ví dụ
Ví dụ 1 (các giá trị chỉ được sử dụng lại một lần)
x = [2, 4, -3, 0, -4]
n = 3
đưa ra như đầu ra
y = [-2, 2, 3, 1, -7]
Ở đâu
- -2là tổng của khối- [0, -4, 2](hai giá trị đầu tiên đến từ sự dịch chuyển tròn)
- 2là tổng của- [-4, 2, 4](giá trị đầu tiên đến từ sự dịch chuyển tròn)
- 3là tổng của- [2, 4, -3](không cần dịch chuyển vòng tròn nữa)
- 1là tổng của- [4, -3, 0]
- -7là tổng của- [-3, 0, -4].
Ví dụ 2 (các giá trị được sử dụng lại nhiều lần)
x = [1, 2]
n = 5
đưa cho
y = [7, 8]
Ở đâu
- 7là tổng của khối- [1, 2, 1, 2, 1](bốn giá trị đầu tiên đã được sử dụng lại theo vòng tròn)
- 8là tổng của khối- [2, 1, 2, 1, 2](ba giá trị đầu tiên đã được sử dụng lại theo vòng tròn)
Quy tắc bổ sung
- Thuật toán sẽ làm việc cho các mảng có kích thước tùy ý và cho các giá trị nguyên tùy ý. Có thể chấp nhận nếu chương trình bị giới hạn bởi loại dữ liệu hoặc giới hạn bộ nhớ; nhưng các giá trị nguyên dương cũng như âm phải được xử lý.
- Đầu vào / đầu ra có thể được lấy / sản xuất bằng bất kỳ phương tiện hợp lý nào .
- Các chương trình hoặc chức năng được cho phép, trong bất kỳ ngôn ngữ lập trình . Sơ hở tiêu chuẩn bị cấm.
- Mã ngắn nhất trong byte thắng.
Các trường hợp thử nghiệm
x, n, -> y
[2, 4, -3, 0, -4], 3          ->  [-2, 2, 3, 1, -7]
[1, 2], 5                     ->  [7, 8]
[2], 7                        ->  [14]
[-5, 4, 0, 1, 0, -10, -4], 4  ->  [-19, -15, -5, 0, 5, -9, -13]
[-5, 4, 0, 1, 0, -10, -4], 1  ->  [-5, 4, 0, 1, 0, -10, -4]
[-2, -1, 0, 1, 2, 3], 5       ->  [4, 3, 2, 1, 0, 5]
[-10, 0, 10], 4               ->  [-10, 0, 10]