참고 : 이것은 일련의 배열 조작 문제 에서 3 위입니다 . 이전 도전에 대해서는 여기를 클릭하십시오 .
리스트의 이동 평균
목록 의 이동 평균 은 원본의 작은 겹치는 하위 목록을 평균하여 생성 된 새롭고 매끄러운 목록을 생성하는 계산입니다.
이동 평균을 만들 때 먼저 특정 '창 크기'를 사용하여 겹치는 하위 목록 목록을 생성하여 매번이 창을 오른쪽으로 한 번 이동합니다.
예를 들어, 목록 [8, 4, 6, 2, 2, 4]
과 창 크기가 주어지면 3
하위 목록은 다음 과 같습니다.
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
그런 다음 각 하위 목록 의 평균 평균 을 계산하여 결과를 얻습니다 [6.0, 4.0, 3.3, 2.7]
(각 값은 소수점 이하 한 자리로 반올림).
도전
당신의 임무는 목록 L 과 정수 1 ≤ n ≤ 길이 (L)가 주어지면 창 크기 n을 사용하여 L에 대한 이동 평균을 계산 하는 프로그램이나 함수를 작성하는 것 입니다.
규칙 :
- 프로그램은 정수 나누기 또는 부동 나누기를 사용할 수 있습니다 . 부동 소수점 나누기의 경우 값이 정확하지 않으면 데이터 형식의 제한으로 인한 작은 부정확성이 허용됩니다.
- 전체 프로그램 또는 기능 (스 니펫은 아님)을 제출할 수 있습니다.
- 목록에 양의 정수만 포함한다고 가정 할 수 있습니다 .
- 표준 허점은 금지되어 있습니다.
- 이것은 code-golf 이므로 가장 짧은 답변 (바이트)이 이깁니다!
테스트 사례
가독성을 쉽게하기 위해 모든 값은 소수점 이하 한 자리로 반올림됩니다.
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]