यदि हमारे पास सूची है, तो सूची कहें [9, 2, 4, 4, 5, 5, 7]
, हम इसके पार एक औसत चल सकते हैं।
3 तत्वों का कहना है कि एक विंडो लेते हुए, प्रत्येक तत्व को इस तरह से एक खिड़की से बदल दिया जाता है: [[9], [9, 2], [9, 2, 4], [2, 4, 4], [4, 4, 5], [4, 5, 5], [5, 5, 7]]
और फिर औसतन, हमें मिलता है [9.0, 5.5, 5.0, 3.3333333333333335, 4.333333333333333, 4.666666666666667, 5.666666666666667]
।
अब तक बहुत सरल। लेकिन एक बात आप इस बारे में देख सकते हैं कि एक चलती औसत सूची को "स्मूथ आउट" कर रही है। तो यह सवाल भी उठता है: सूची को "पर्याप्त रूप से सुचारू" बनाने के लिए किसी को औसतन कितनी बार चलना पड़ता है?
आपका कार्य
फ्लोट्स की एक सूची को देखते हुए, एक पूर्णांक विंडो का आकार, और एक फ्लोट, आउटपुट जो मानक विचलन को उस फ्लोट से कम प्राप्त करने के लिए चलती औसत को कितनी बार लेना है। उन लोगों के लिए जो नहीं जानते हैं, मानक विचलन मापता है कि डेटा का एक सेट कितना सुचारू है और इसकी गणना निम्न सूत्र द्वारा की जा सकती है:
उदाहरण के लिए, हमारी पहले की सूची और अधिकतम stddev का उपयोग करके .5
, हमें 8
पुनरावृत्तियाँ मिलती हैं जो इस तरह दिखती हैं:
[9.0, 5.5, 5.0, 3.3333333333333335, 4.333333333333333, 4.666666666666667, 5.666666666666667]
[9.0, 7.25, 6.5, 4.6111111111111116, 4.2222222222222223, 4.1111111111111107, 4.8888888888888893]
[9.0, 8.125, 7.583333333333333, 6.1203703703703702, 5.1111111111111107, 4.3148148148148149, 4.4074074074074074]
[9.0, 8.5625, 8.2361111111111107, 7.2762345679012341, 6.2716049382716044, 5.1820987654320989, 4.6111111111111107]
[9.0, 8.78125, 8.5995370370370363, 8.024948559670781, 7.2613168724279831, 6.2433127572016458, 5.3549382716049374]
[9.0, 8.890625, 8.7935956790123466, 8.4685785322359397, 7.9619341563786001, 7.1765260631001366, 6.2865226337448554]
[9.0, 8.9453125, 8.8947402263374489, 8.7175997370827627, 8.4080361225422955, 7.8690129172382264, 7.141660951074531]
[9.0, 8.97265625, 8.9466842421124824, 8.8525508211400705, 8.6734586953208357, 8.3315495922877609, 7.8062366636183507]
और एक अंत के साथ 0.40872556490459366
। तुम सिर्फ आउटपुट 8
।
लेकिन वहाँ एक पकड़ है:
जवाब नॉनवेज नहीं होना चाहिए! यदि प्रारंभिक सूची पहले से ही अधिकतम stddev को संतुष्ट करती है, तो आपको यह देखना होगा कि आप "कितने पीछे जा सकते हैं" और चलती औसत को पूर्ववत करें और अभी भी सूची में अधिकतम stddev को संतुष्ट करें। चूंकि हम प्रारंभिक n
डेटा बिंदुओं के लिए खिड़कियों को रौंद रहे हैं और उन को नहीं गिरा रहे हैं, इसलिए चलती औसत को उलटने के लिए पर्याप्त डेटा है।
उदाहरण के लिए, यदि हम सूची के साथ शुरू करते हैं [9.0, 8.99658203125, 8.9932148677634256, 8.9802599114806494, 8.9515728374598496, 8.8857883675880771, 8.7558358356689627]
(अपने पहले के उदाहरण से लिया गया है, तो 3 अधिक चलती औसत के साथ) और एक ही खिड़की का आकार और अधिकतम stddev, आप आउटपुट करेंगे -3
क्योंकि आप चलती औसत को अधिकतम 3
समय पर उलट सकते हैं ।
कोई भी उचित I / O प्रारूप ठीक है।
यह कोड-गोल्फ है जो बाइट्स जीत में सबसे छोटा कोड है !
परीक्षण के मामलों
[9, 2, 4, 4, 5, 5, 7], 3, .5 -> 8
[9, 2, 4, 4, 5, 5, 7], 3, .25 -> 9
[9.0, 8.99658203125, 8.9932148677634256, 8.9802599114806494, 8.9515728374598496, 8.8857883675880771, 8.7558358356689627], 3, .5 -> -3
[1000, 2, 4, 4, 5, 5, 7], 7, .25 -> 13
[1000.0, 999.98477172851563, 999.96956668760447, 999.95438464397, 999.90890377378616, 999.83353739825293, 999.69923168916694], 4, 7 -> -6