Lưu ý: Đây là số 3 trong một loạt các thử thách thao tác mảng . Đối với thử thách trước, bấm vào đây .
Di chuyển trung bình của một danh sách
Trung bình di chuyển của danh sách là một phép tính dẫn đến một danh sách mới, được làm mịn, được tạo bằng cách lấy trung bình các danh sách con chồng chéo nhỏ của bản gốc.
Khi tạo trung bình di chuyển, trước tiên chúng tôi tạo danh sách các danh sách phụ chồng chéo bằng cách sử dụng một 'kích thước cửa sổ' nhất định, dịch chuyển cửa sổ này sang bên phải một lần mỗi lần.
Ví dụ: được đưa ra danh sách [8, 4, 6, 2, 2, 4]
và kích thước cửa sổ 3
, danh sách phụ sẽ là:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Sau đó, chúng tôi tính trung bình trung bình của mỗi danh sách con để thu được kết quả: [6.0, 4.0, 3.3, 2.7]
(mỗi giá trị được làm tròn đến một vị trí thập phân).
Các thách thức
Nhiệm vụ của bạn là viết chương trình hoặc hàm, đưa ra danh sách L và số nguyên 1 ≤ n ≤ length (L) , tính trung bình di chuyển cho L bằng kích thước cửa sổ n .
Quy tắc:
- Chương trình của bạn có thể sử dụng phân chia số nguyên hoặc phân chia float. Trong trường hợp phân chia float, không chính xác nhỏ do các giới hạn của kiểu dữ liệu được cho phép, miễn là giá trị này là chính xác.
- Bạn có thể gửi một chương trình đầy đủ hoặc một chức năng (nhưng không phải là một đoạn).
- Bạn có thể cho rằng danh sách sẽ chỉ chứa các số nguyên dương .
- Sơ hở tiêu chuẩn bị cấm.
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng!
Các trường hợp thử nghiệm
Lưu ý rằng, để dễ đọc, tất cả các giá trị được làm tròn đến một chữ số thập phân.
n=5, [1, 2, 3, 4, 5, 6, 7, 8] -> [3, 4, 5, 6]
n=3, [100, 502, 350, 223, 195] -> [317.3, 358.3, 256]
n=1, [10, 10, 10] -> [10, 10, 10]
n=3, [10, 20, 30] -> [20]
n=2, [90, 40, 45, 100, 101] -> [65, 42.5, 72.5, 100.5]