पृष्ठभूमि
मेरे पास "कार्यदिवस के मोज़े" का एक संग्रह है, जो सप्ताह के दिनों तक लेबल किए गए सात जोड़े मोज़े हैं। जब मैं अपने मोजे धोता हूं, तो वे ढेर में समाप्त हो जाते हैं, और मुझे उन्हें अलमारी में रखने से पहले सही जोड़े में व्यवस्थित करना चाहिए। मेरी रणनीति एक समय में ढेर से एक यादृच्छिक जुर्राब खींचना और इसे एक दराज पर रखना है। जब भी ड्रॉअर पर मोजे की एक मिलान जोड़ी होती है, तो मैं उन्हें एक साथ बांधता हूं और उन्हें कोठरी में डाल देता हूं। आपका काम इस यादृच्छिक प्रक्रिया का अनुकरण करना है और पहली मिलान जोड़ी को खोजने के लिए आवश्यक ड्रॉ की संख्या वापस करना है।
इनपुट
आपका इनपुट एक पूर्णांक N। 1 है । यह "एक सप्ताह में दिनों की संख्या" का प्रतिनिधित्व करता है: ढेर में मोजे के एन जोड़े हैं , और प्रत्येक जोड़ी का एक अलग लेबल है। यदि आवश्यक हो, तो आप इनपुट के रूप में PRNG बीज भी ले सकते हैं।
उत्पादन
आपका आउटपुट मोज़े की संख्या है जो मुझे पहली मिलान जोड़ी मिलने से पहले खींचनी है। उदाहरण के लिए, यदि पहले दो मोज़े पहले से ही एक मिलान जोड़ी बनाते हैं, तो आउटपुट है 2
।
बेशक, आउटपुट यादृच्छिक है, और ड्राइंग ऑर्डर पर निर्भर करता है। हम मानते हैं कि सभी ड्राइंग ऑर्डर समान रूप से संभव हैं , ताकि हर बार एक जुर्राब तैयार हो, पसंद सभी विकल्पों से समान और स्वतंत्र है।
उदाहरण
चलो एन = 3 , हम में कुल 6 मोजे, लेबल है ताकि AABBCC । "सॉक-ड्राइंग प्रोटोकॉल" का एक संभावित रन इस प्रकार है:
| Pile | Drawer | Pairs
Begin | AABBCC | - | -
Draw B | AABCC | B | -
Draw C | AABC | BC | -
Draw B | AAC | C | BB
Draw A | AC | AC | BB
Draw A | C | C | AA BB
Draw C | - | - | AA BB CC
दूसरी बी ड्राइंग के बाद पहली मिलान जोड़ी पाई गई थी , जिसे खींचा जाने वाला तीसरा शॉक था, इसलिए सही आउटपुट है 3
।
नियम और स्कोरिंग
आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं। सबसे कम बाइट गिनती जीतता है, और मानक खामियों को रोक दिया जाता है। इनपुट और आउटपुट किसी भी उचित प्रारूप में हो सकते हैं, जिसमें यूनरी (स्ट्रिंग ऑफ 1
एस) शामिल है।
आप मान सकते हैं कि आपकी भाषा बिल्ट-इन RNG एकदम सही है। आपको वास्तव में जुर्राब-ड्राइंग प्रोटोकॉल का अनुकरण करने की ज़रूरत नहीं है, जब तक कि आपके आउटपुट में सही संभावना वितरण नहीं होता है।
"परीक्षण के मामलों"
यहाँ इनपुट N = 7 के लिए सभी आउटपुट की अनुमानित संभावनाएँ हैं :
Output 2 3 4 5 6 7 8
Probability 0.077 0.154 0.210 0.224 0.186 0.112 0.037
अपने समाधान का परीक्षण करने के लिए, आप इसे 40 000 बार कह सकते हैं और देख सकते हैं कि आउटपुट वितरण यथोचित रूप से बंद है।
Draw all socks. End up with an odd number.