この配列が、過去28日間に毎日達成したプレスアップの数だとしましょう。
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
ご覧のように、先週は急激な上昇傾向にあり、これがこのデータの中で最も興味のある部分です。過去のデータが多いほど、「平均」でそのデータを取り上げる必要が少なくなります。 '腕立て伏せの数。
そのために、前週よりも各週の価値が高い「平均」を算出したいと思います。
この問題の一部ではなく、背景情報。
通常の平均:
すべての値の合計/値の数
上記の場合:
1440/28 = 51.42857142857143
加重平均:
アレイを7つの4つのグループに分割し、新しいアレイを起動します。
- 最初のグループを配列に追加します。
- 2番目のグループをアレイに2回追加します。
- 3番目のグループを3回配列に追加します。
- 4番目のグループを配列に4回追加します。
長さで新しい配列の全て、及び分割を合計新しいアレイ。
上記の場合:
配列をこれに変換します:
[
20,20,20,30,30,30,30, # first week once
35,35,40,40,40,45,45,
35,35,40,40,40,45,45, # second week twice
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50, # third week thrice
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120 # Fourth week four times
]
次に、そのアレイで通常の平均を実行します。
4310/70 = 61.57142857142857
先週の上昇傾向のため、通常の平均値よりも高いことに注意してください。
ルール:
- 入力は28の非負整数のフラット配列です。
- 書きたい言語。
- 数値を出力します。
- 私はいつもTIOリンクを見たいです。
- 最小のバイト数で問題を解決してください。
- 結果は、小数点以下4桁までの精度の小数(切り捨てても、テストケースの値から切り上げても問題ありません)または正確な小数でなければなりません。
テストケース:
ケース1:上昇傾向
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
通常平均:51.42857142857143加重平均:61.57142857142857
ケース2:落ち着きを残す
(私は悪い週を過ごしましたが、それは少し前のことでした)
[
50,50,50,50,50,50,50,
10,10,10,10,10,10,10,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50
]
通常平均:40加重平均:42
ケース3:あきらめる
私は悪い週を過ごしました、それは私の平均を速く引き下げています。
[
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
10,10,10,10,10,10,10
]
通常平均:40加重平均:34
ケース4:平均化
さて、ここで遊んでいるだけなので、通常の平均と加重平均の値は同じかもしれないと思いましたが、もちろんそうではありませんでした。
[
60,60,60,60,60,60,60,
30,30,30,30,30,30,30,
20,20,20,20,20,20,20,
15,15,15,15,15,15,15
]
通常平均:31.25加重平均:24.0
ボーナス問題:
28の値のどの組み合わせが同じ通常の平均と加重平均を持つでしょうか?
幸せなゴルフ!
new_avg = α*weekly_sum + (1-α)*old_avg
いくつかのためにα∈(0,1)
0
毎日腕立て伏せをしているので、私の加重平均は私の通常の平均と同じです。