श्रृंखला के बारे में
सबसे पहले, आप इसे किसी अन्य कोड गोल्फ चुनौती की तरह मान सकते हैं, और श्रृंखला के बारे में चिंता किए बिना इसका जवाब दे सकते हैं। हालांकि, सभी चुनौतियों के बीच एक लीडरबोर्ड है। आप लीडरबोर्ड के साथ पहली पोस्ट में श्रृंखला के बारे में कुछ और जानकारी पा सकते हैं ।
यद्यपि मेरे पास श्रृंखला के लिए विचारों का एक समूह है, लेकिन भविष्य की चुनौतियां अभी तक पत्थर में सेट नहीं हैं। यदि आपके कोई सुझाव हैं, तो कृपया मुझे संबंधित सैंडबॉक्स पोस्ट पर बताएं ।
छेद 3: पूर्णांक विभाजन
कठिनाई को थोड़ा बढ़ाने का समय।
एक सकारात्मक पूर्णांक के एक विभाजन को सकारात्मक पूर्णांक के n
एक बहु के रूप में परिभाषित किया गया है जो योग है n
। एक उदाहरण के रूप में अगर n = 5
, निम्नलिखित विभाजन मौजूद हैं:
{1,1,1,1,1}
{2,1,1,1}
{2,2,1}
{3,1,1}
{3,2}
{4,1}
{5}
ध्यान दें कि ये मल्टीसेट हैं, इसलिए उनके लिए कोई ऑर्डर नहीं है {3,1,1}
, {1,3,1}
और {1,1,3}
सभी को समान माना जाता है।
का n
एक यादृच्छिक विभाजन उत्पन्न करने के लिए आपका कार्य दिया गया है n
। यहाँ विस्तृत नियम हैं:
उत्पादित विभाजन का वितरण एक समान होना चाहिए । यही है, उपरोक्त उदाहरण में, प्रत्येक विभाजन को 1/7 संभावना के साथ वापस किया जाना चाहिए।
बेशक, PRNGs की तकनीकी सीमाओं के कारण, सही एकरूपता असंभव होगी। आपके सबमिशन की एकरूपता का आकलन करने के उद्देश्य से, निम्नलिखित कार्यों को पूरी तरह से समान वितरण प्रदान करने के रूप में माना जाएगा:
- PRNG (किसी भी सीमा से अधिक) से एक संख्या प्राप्त करना, जो कि (लगभग) एकरूप होने के लिए प्रलेखित है।
- मॉडुलो या गुणा (या कुछ अन्य ऑपरेशन जो समान रूप से मान वितरित करता है) के माध्यम से एक छोटे सेट पर संख्याओं के एक बड़े सेट पर एक समान वितरण का मानचित्रण करता है। बड़े सेट में छोटे सेट के रूप में कम से कम 1024 गुना अधिक संभव मान होते हैं।
चूंकि विभाजन मल्टीसेट्स हैं, आप उन्हें किसी भी क्रम में वापस कर सकते हैं, और इस आदेश को लगातार नहीं होना चाहिए। हालांकि, यादृच्छिक वितरण के उद्देश्य के लिए, आदेश की अनदेखी की जाती है। अर्थात्, उपरोक्त उदाहरण में
{3,1,1}
,{1,3,1}
और{1,1,3}
साथ में 1/7 की वापसी की संभावना होनी चाहिए।- आपके एल्गोरिथ्म में एक नियतात्मक रनटाइम होना चाहिए । विशेष रूप से, आप रैंडम मल्टीसेट्स उत्पन्न नहीं कर सकते हैं और यदि उन्हें योग नहीं करते हैं तो उन्हें अस्वीकार कर सकते हैं
n
। - आपके एल्गोरिथ्म की समय जटिलता बहुपद में होनी चाहिए
n
। विशेष रूप से, आप बस सभी विभाजन उत्पन्न नहीं कर सकते हैं और एक यादृच्छिक एक का चयन कर सकते हैं (चूंकि विभाजन की संख्या तेजी से बढ़ती हैn
)। आप मान सकते हैं कि आप जिस PRNG का उपयोग कर रहे हैं, वह O (1) प्रति मान में समान रूप से वितरित मान लौटा सकता है। - आपको किसी भी अंतर्निहित फ़ंक्शन का उपयोग नहीं करना चाहिए जो इस कार्य को हल करता है।
आप एक पूर्ण कार्यक्रम या फ़ंक्शन लिख सकते हैं और एसटीडीआईएन या निकटतम विकल्प, कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट ले सकते हैं और रिटर्न वैल्यू के माध्यम से या एसटीडीयूएसटी (या निकटतम विकल्प) पर प्रिंट करके आउटपुट का उत्पादन कर सकते हैं।
आप ऐसा मान सकते हैं n ≤ 65
(जैसे कि विभाजन की संख्या 2 21 से कम है )। आउटपुट किसी भी सुविधाजनक, अस्पष्ट सूची या स्ट्रिंग प्रारूप में हो सकता है।
यदि आप एक फ़ंक्शन सबमिट करते हैं, तो कृपया थोड़ा परीक्षण कार्यक्रम प्रदान करने पर विचार करें जो फ़ंक्शन को कई बार कॉल करता है और परिणामों को प्रिंट करता है। यह ठीक है अगर पैरामीटर को कोड में घुमाया जाना है। यह सिर्फ इतना है कि लोग जांच सकते हैं कि समाधान कम से कम लगभग समान है।
यह कोड गोल्फ है, इसलिए सबसे छोटा सबमिशन (बाइट्स में) जीतता है। और निश्चित रूप से, प्रति उपयोगकर्ता सबसे कम सबमिशन भी श्रृंखला के समग्र लीडरबोर्ड में प्रवेश करेगा।
लीडरबोर्ड
श्रृंखला की पहली पोस्ट एक लीडरबोर्ड उत्पन्न करती है।
यह सुनिश्चित करने के लिए कि आपके उत्तर दिखाए गए हैं, कृपया प्रत्येक मार्कलाइन के साथ निम्नलिखित मार्केड टेम्प्लेट का उपयोग करके प्रत्येक उत्तर को शुरू करें:
# Language Name, N bytes
N
आपके सबमिशन का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(भाषा को वर्तमान में नहीं दिखाया गया है, लेकिन स्निपेट की आवश्यकता होती है और इसे पार्स किया जाता है, और मैं भविष्य में एक उप-भाषा लीडरबोर्ड जोड़ सकता हूं।)