सात कार्ड स्थितियों को एकल संख्या में परिवर्तित करना
जब यह न्यूज़लेटर प्रकाशित होगा, तब पूर्ण सूर्यग्रहण से चार दिन पहले का समय होगा। मुझे उम्मीद है कि आप सभी उत्साहित होंगे और आप सभी जो शारीरिक और आर्थिक रूप से पूर्ण सूर्यग्रहण देखने में सक्षम हैं, वे भी उत्साहित होंगे। दुर्भाग्य से, टेक्सास में, जहाँ मैं इसे देखने की योजना बना रहा हूँ, उस दिन गरज के साथ बारिश का पूर्वानुमान है। हालाँकि, मुझे उम्मीद है कि आसमान साफ़ रहेगा।
मुख्य विषय पर आने से पहले,ईस्टर ट्रिविया पर मेरे पिछले न्यूज़लेटर पर मुझे आश्चर्यजनक रूप से कड़ी प्रतिक्रिया मिली थी। ऐसा लगता है कि आपमें से कुछ लोग बाइबल को अच्छी तरह जानते हैं और मेरे कुछ उत्तरों पर मुझे चुनौती दी है। विरोध किए गए दो मुख्य प्रश्न ये हैं, जो आपस में एक-दूसरे से निकटता से जुड़े हैं:
प्रश्न 8: बाद में यहूदा ने वह पैसा उन याजकों को लौटा दिया जो उसे यीशु को पकड़वाने के लिए मिले थे। उन्होंने उस पैसे का क्या किया?
उत्तर 8: उन्होंने एक कुम्हार का खेत खरीदा, जहाँ लावारिस लाशें दफ़नाई जाती हैं। (मत्ती 27:6-8)
मुझे बताया गया कि प्रेरितों के काम की किताब चाँदी के 30 सिक्कों के बारे में एक अलग कहानी बताती है। वहाँ लिखा है कि यहूदा ने कुम्हार का खेत खुद खरीदा था (प्रेरितों के काम 1:18)।
प्रश्न 9: यहूदा ने खुद को कैसे मार डाला?
उत्तर 9: फाँसी (मत्ती 27:3-5)
फिर से, प्रेरितों के काम की पुस्तक में एक अलग संस्करण प्रतीत होता है। मुझे ठीक से समझ नहीं आ रहा कि इसका क्या अर्थ निकाला जाए, इसलिए मैं शास्त्र को ही अपने आप बोलने दूँगा: "यहूदा ने अपनी दुष्टता के बदले मिले हुए धन से एक खेत मोल लिया; वहाँ वह सिर के बल गिरा, उसका शरीर फट गया और उसकी सारी अंतड़ियाँ बाहर निकल आईं।" - प्रेरितों के काम 1:18.
मेरी व्याख्या यह है कि यहूदा बीमार पड़ गया, उसका पेट फूल गया और उसके शरीर पर खुले घाव हो गए। आखिरकार वह इतना कमज़ोर हो गया कि गिर पड़ा और उसकी आँतें फट गईं। हो सकता है कि वह जानबूझकर गिरा हो।
इस पर शोध करते हुए, मैंने देखा है कि बाइबिल की अचूकता के कुछ समर्थकों ने दोनों कहानियों को एक ही पेचीदा कहानी में मिलाने की बहुत कोशिश की है। हालाँकि, मैं ऐसी व्याख्याओं पर आँखें मूँदकर ही सोच सकता हूँ।
अब बात खत्म हो गई है, तो आइए इस हफ़्ते के मुख्य विषय पर आते हैं: सात पत्तों वाले पोकर हैंड में स्कोर करने के लिए कुशल कोडिंग। कंप्यूटर की तेज़ रफ़्तार को देखते हुए, यह कोई बड़ी समस्या नहीं लग सकती।हालाँकि, अल्टीमेट टेक्सास होल्ड 'एम में पत्तों के गिरने के 56 ट्रिलियन तरीकों का विश्लेषण करना शामिल है। इनमें से प्रत्येक के लिए दो सात-कार्ड पोकर हाथों में स्कोर करना ज़रूरी है। बिना शॉर्टकट के इसमें सालों लग सकते हैं।
52 पत्तों वाली डेक में से सात पत्ते चुनने के लिए combin(52,7) = 133,784,560 तरीके हैं। समय बचाने की एक महत्वपूर्ण तकनीक यह है कि हर संभव संयोजन को एक बार स्कोर किया जाए और स्कोर को एक सरणी में सहेज लिया जाए। हालाँकि, सात अलग-अलग पत्तों को सरणी में एक ही स्थान पर कैसे पहुँचा जाए?
मेरा जवाब देने से पहले, कोई 52^7 आकार की सात-आयामी सरणी का उपयोग करने का सुझाव दे सकता है। ऐसी सरणी में 1,028,071,702,528 पूर्णांकों को रखने की आवश्यकता होगी। मुझे नहीं लगता कि कोई भी डेस्कटॉप कंप्यूटर इतनी मेमोरी आवंटन की अनुमति देगा। नहीं, हमें किसी तरह 7 कार्डों को 0 से 133,784,559 तक के पूर्णांकों में मैप करना होगा। मेरा C++ कंपाइलर बिना किसी शिकायत के इतने आकार की सरणी की अनुमति देता है।
सबसे पहले, प्रत्येक कार्ड को 0 से 51 तक के किसी पूर्णांक से जोड़ें। आप इसे अपनी इच्छानुसार किसी भी तरह से कर सकते हैं। व्यक्तिगत रूप से, मैं 2 के मान 0 से 3, 3 के मान 4 से 7, और इसी तरह इक्कों तक 48 से 51 तक के मानों से शुरू करता हूँ। यह महत्वपूर्ण है कि जब आप किसी कार्ड संख्या को 4 से भाग दें तो शेषफल हमेशा एक ही रंग का हो। उदाहरण के लिए, सभी पान के पत्तों का मान 0, रिक्त स्थान 1, चिड़ी 2 और ईंट के पत्तों का मान 3 हो सकता है।
मेरा फ़ंक्शन कार्डों के निम्नतम सेट 0,1,2,3,4,5,6 को संख्या 0 पर मैप करेगा। इसी प्रकार, 45,46,47,48,49,50,51 के अधिकतम सेट को 133,784,559 के अधिकतम मान पर मैप किया जाएगा।
उदाहरण के तौर पर, आइए 5,10,15,20,25,30,35 क्रमांक वाले कार्डों के सेट पर विचार करें और निर्धारित करें कि उस सेट को किस पूर्णांक से मैप किया जाना चाहिए।
सबसे पहले, सबसे छोटे कार्ड, जिसका अंक 5 है, पर विचार करें। हम 0 से 4 तक के कम से कम एक कार्ड वाले कई संयोजनों को छोड़ सकते हैं। डेक में शेष 47 में से 7 कार्ड चुनने के तरीकों की संख्या combin(47,7) = 62,891,499 है। जैसा कि पहले बताया गया है, 52 में से 7 कार्ड चुनने के लिए combin(52,7) = 133,784,560 तरीके हैं। इसलिए, हम 133,784,560 - 62,891,499 = 70,893,061 संख्याओं को छोड़ सकते हैं जिनमें 0 से 4 की सीमा में कम से कम एक कार्ड है।
इसके बाद, 10 मान वाले दूसरे कार्ड पर विचार करें। हम 6 से 9 के बीच कम से कम एक कार्ड वाले और भी संयोजनों को छोड़ सकते हैं। डेक में बचे 42 कार्डों में से बचे 6 कार्डों को चुनने के तरीकों की संख्या combin(42,6) = 5,245,786 है। यह पहले कार्ड के 5 मान से ऊपर के अन्य छह कार्डों को चुनने के लिए combin(46,6)=9,366,819 संभावित तरीकों में से है। इसलिए, हम 6 से 9 के बीच कम से कम एक मान वाले कार्डों के सेट के लिए 9,366,819-5,245,786=4,121,033 संख्याओं को छोड़ सकते हैं।
इसके बाद, 15 मूल्य वाले तीसरे कार्ड पर विचार करें। हम 11 से 14 की सीमा में कम से कम एक कार्ड वाले अधिक संयोजनों को छोड़ सकते हैं। डेक में बचे 37 कार्डों में से 5 कार्डों को चुनने के तरीकों की संख्या combin(37,5) = 435,897 है।यह दूसरे कार्ड के 10 के मान से ऊपर के अन्य पाँच कार्ड चुनने के लिए कॉम्बिन(41,5)=749,398 संभावित तरीकों में से एक है। इसलिए, हम 11 और 14 के बीच कम से कम एक मान वाले कार्डों के सेट के लिए 749,398-435,897=313,501 संख्याओं को छोड़ सकते हैं।
इसके बाद, 20 मान वाले चौथे पत्ते पर विचार करें। हम ऐसे और संयोजनों को छोड़ सकते हैं जिनमें 16 से 19 के बीच कम से कम एक पत्ता शामिल हो। डेक में बचे 32 पत्तों में से बचे हुए 4 पत्तों को चुनने के तरीकों की संख्या combin(32,4) = 35,960 है। यह तीसरे पत्ते के 15 मान से ऊपर के अन्य चार पत्तों को चुनने के संभावित तरीकों combin(36,4)=58,905 में से है। इसलिए, हम 16 और 19 के बीच कम से कम एक मान वाले पत्तों के सेट के लिए 58,905-35,960=22,945 संख्याओं को छोड़ सकते हैं।
इसके बाद, 25 मान वाले पाँचवें पत्ते पर विचार करें। हम 21 से 24 के बीच कम से कम एक पत्ता शामिल करने वाले और भी संयोजनों को छोड़ सकते हैं। डेक में बचे 27 पत्तों में से बचे तीन पत्तों को चुनने के तरीकों की संख्या combin(27,3) = 2,925 है। यह चौथे पत्ते के 20 मान से ऊपर के अन्य तीन पत्तों को चुनने के लिए combin(31,3)=4,495 संभावित तरीकों में से है। इसलिए, हम 21 और 24 के बीच कम से कम एक मान वाले पत्तों के सेट के लिए 4,495-2,925=1,570 संख्याओं को छोड़ सकते हैं।
इसके बाद, 30 मान वाले छठे पत्ते पर विचार करें। हम 26 से 29 के बीच कम से कम एक पत्ता शामिल करने वाले और भी संयोजनों को छोड़ सकते हैं। डेक में बचे 22 पत्तों में से बचे हुए दो पत्तों को चुनने के तरीकों की संख्या combin(22,2) = 231 है। यह पाँचवें पत्ते के 20 मान से ऊपर के अन्य दो पत्तों को चुनने के combin(26,3)=325 संभावित तरीकों में से है। इसलिए, हम 26 और 29 के बीच कम से कम एक मान वाले पत्तों के सेट के लिए 325-231=94 संख्याओं को छोड़ सकते हैं।
अब हमारे पास सिर्फ़ एक पत्ता बचा है। छठे पत्ते से पता चलता है कि वह 30 से बड़ा होना चाहिए। दरअसल, हम जानते हैं कि वह 35 है। इसलिए, हम सातवें पत्ते के लिए 31 से 34 तक के चार पत्तों को छोड़ सकते हैं।
कुल मिलाकर, हमने 70,893,061+4,121,033+313,501+22,945+1,570+94+4 = 75,352,208 कार्ड छोड़ दिए हैं।
चूंकि हम शून्य से संख्या लिखना शुरू करते हैं, जैसा कि सभी अच्छे प्रोग्रामर करते हैं, हम 5,10,15,20,25,30,35 से लेकर 75,352,208 तक के संख्याओं के समूह को मान दे सकते हैं।
बेशक, यही तर्क किसी भी आकार के डेक और उसमें से किसी भी संख्या में कार्ड चुनने पर काम करेगा।
अगले सप्ताह मैं आपको 8 अप्रैल, 2024 के पूर्ण ग्रहण के बारे में कम से कम एक प्रारंभिक रिपोर्ट देने की योजना बना रहा हूँ!