注:これは、一連のアレイ操作の課題の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]
(各値は小数点以下1桁に丸められます)。
チャレンジ
あなたの仕事は、リストLおよび整数1≤n≤length(L)が与えられ、ウィンドウサイズnを使用してLの移動平均を計算するプログラムまたは関数を書くことです。
ルール:
- プログラムでは、整数除算または浮動小数点除算を使用できます。浮動小数点除算の場合、値がそれ以外の場合に正しい限り、データ型の制限によるわずかな不正確さが許可されます。
- 完全なプログラムまたは機能を送信できます(スニペットは送信できません)。
- リストには正の整数のみが含まれると想定できます。
- 標準的な抜け穴は禁止されています。
- これはcode-golfなので、最短の回答(バイト単位)が勝ちです!
テストケース
読みやすくするために、すべての値は小数点以下1桁に丸められていることに注意してください。
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]