मैंने पहले एक प्रश्न पूछा था कि एक संभावना को जल्दी और सही तरीके से कैसे गणना करें। हालाँकि, जाहिर है यह बहुत आसान था क्योंकि एक बंद फॉर्म समाधान दिया गया था! यहाँ एक और अधिक कठिन संस्करण है।
यह कार्य वास्तव में एक संभावना की गणना करने के कोड लिखने के बारे में है और जल्दी से । आउटपुट एक सटीक संभाव्यता होना चाहिए जो कि इसके सबसे कम रूप में एक अंश के रूप में लिखा गया हो। वह यह है कि उत्पादन कभी नहीं 4/8बल्कि होना चाहिए 1/2।
कुछ सकारात्मक पूर्णांक के लिए n, लंबाई के 1s और -1s के समान रूप से यादृच्छिक स्ट्रिंग पर विचार nकरें और इसे कॉल करें। अब Aस्वयं की एक प्रति के लिए सहमति दें । A[1] = A[n+1]अगर यह 1 से अनुक्रमण है, A[2] = A[n+2]और इसी तरह। Aअब लंबाई है 2n। अब लंबाई के दूसरे यादृच्छिक स्ट्रिंग पर भी विचार करें nजिनके पहले nमान -1, 0 या 1 हैं, प्रायिकता के साथ 1 / 4,1 / 2, 1/4 प्रत्येक और इसे बी कहते हैं।
अब अलग के Bसाथ के आंतरिक उत्पाद पर विचार करें ।A[1+j,...,n+j]j =0,1,2,...
उदाहरण के लिए, विचार करें n=3। संभावित मान हैं Aऔर Bहो सकता है A = [-1,1,1,-1,...]और B=[0,1,-1]। इस मामले में पहले दो आंतरिक उत्पाद हैं 0और 2।
कार्य
प्रत्येक के लिए , आपके कोड के jसाथ शुरू j=1, इस संभावना को आउटपुट करना चाहिए कि सभी पहले j+1आंतरिक उत्पाद हर के लिए शून्य हैं n=j,...,50।
मार्टिन ब्युटनर द्वारा निर्मित तालिका की नकल करना j=1हमारे लिए निम्न नमूना परिणाम है।
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
स्कोर
आपका स्कोर jमेरे कंप्यूटर पर आपका कोड 1 मिनट में सबसे बड़ा है । थोड़ा स्पष्ट करने के लिए, प्रत्येक jको एक मिनट मिलता है। ध्यान दें कि पिछले लिंक किए गए प्रश्न में डायनामिक प्रोग्रामिंग कोड आसानी से ऐसा करेगा j=1।
टाई ब्रेकर
यदि दो प्रविष्टियों को समान jस्कोर मिलता है, तो जीतने वाली प्रविष्टि वह होगी जो उसके लिए nमेरी मशीन पर एक मिनट में उच्चतम हो जाती है j। यदि इस कसौटी पर भी दो सर्वश्रेष्ठ प्रविष्टियाँ समान हैं तो विजेता सबसे पहले प्रस्तुत किया गया उत्तर होगा।
भाषा और पुस्तकालय
आप किसी भी स्वतंत्र रूप से उपलब्ध भाषा और अपनी पसंद की लाइब्रेरी का उपयोग कर सकते हैं। मुझे आपका कोड चलाने में सक्षम होना चाहिए ताकि कृपया अपने कोड को लिनक्स में चलाने / संकलित करने के लिए एक पूर्ण विवरण शामिल करें यदि संभव हो तो।
मेरी मशीन मेरी मशीन पर टाइमिंग चलाई जाएगी। यह एक मानक ubuntu एक AMD FX-8350 आठ-कोर प्रोसेसर पर स्थापित है। इसका मतलब यह भी है कि मुझे आपका कोड चलाने में सक्षम होना चाहिए।
प्रविष्टियां जीतना
j=2मिच श्वार्ट्ज द्वारा पायथन में ।j=2में अजगर feersum द्वारा। वर्तमान में सबसे तेज प्रविष्टि है।