पोकेमॉन वीडियो गेम में, खिलाड़ी को जंगली जानवरों को छोटी गेंदों में मजबूर करने और उन्हें लड़ने के लिए प्रशिक्षित करने के लिए दुनिया में भेजा जाता है। बेशक, हर कोई जानता है कि जूझने के लिए कोई भी पोकेमॉन नहीं खेलता है। असली ड्रॉ सीरीज़ है जो पोकेमॉन को ही पकड़ रही है! आपका काम कैप्चर प्रयास के दौरान पोकेबल को अनुकरण करना है। यह चुनौती पीढ़ी V कैप्चर फॉर्मूला का उपयोग करेगी, जो इस प्रकार है:

HP_maxलक्ष्य पोकेमॉन के अधिकतम एचपी के बराबर है। HP_currentलक्ष्य पोकेमॉन के वर्तमान एचपी के बराबर है। पोकेमॉन का rateकैच रेट bonus_ballहै, फेंके गए पोकेबेल का गुणक है, और bonus_status2.5 है यदि लक्ष्य पोकेमोन सो रहा है या जमे हुए है, तो 1.5 अगर लक्ष्य पोकेमॉन लकवाग्रस्त, जहर, या जला हुआ है, और 1 अन्यथा।
खोजने के बाद a, आपको तीन "शेक चेक" करने हैं। शेक चेक के सफल होने की संभावना है 65536 / (255 / a)^(1/4)। यदि इनमें से कोई भी चेक विफल हो जाता है, तो पोकेमॉन अपनी गेंद से बच जाता है। यदि तीनों जाँच सफल होती हैं, तो पकौड़ा पकड़ा जाता है!
नोट: जब भी कोई विभाजन किया जाता है, तो परिणाम को 1/4096 के गुणक में बदल दिया जाता है। यह आम तौर पर एक महत्वहीन विवरण है, लेकिन इसे आपके कार्यक्रम में शामिल किया जाना चाहिए।
आपकी चुनौती एक प्रोग्राम लिखने की है जो शेक चेक को निष्पादित करता है और चेक की स्थिति को रोकने के लिए प्रिंट करता है। स्टडिन पर, आपके कार्यक्रम को (कम से कम, नीचे का विवरण) पोकेमॉन की अधिकतम एचपी, लक्ष्य पोकेमोन की कैच दर, और पोकेबल का नाम प्राप्त होगा। अधिकतम एचपी और कैच रेट दोनों पूर्णांक होने की गारंटी है, जबकि पोकेबल का नाम हमेशा एक स्ट्रिंग होता है। यह इनपुट किसी भी क्रम में आ सकता है और किसी भी परिसीमन चरित्र के साथ आपके लिए सुविधाजनक है, जब तक यह सुसंगत हो। मान लें कि इनपुट सही है, कोई त्रुटि से निपटने की आवश्यकता नहीं है।
आपके द्वारा समर्थित पोकेबल्स के नाम और उनके कैच मल्टीप्लायरों को यहाँ सूचीबद्ध किया गया है:
Poke | 1
Great | 1.5
Ultra | 2
Master | 255
आप मान सकते हैं कि लक्ष्य सो रहा है और 1 एचपी पर है। आउटपुट के लिए अपेक्षित प्रारूप यह है:
(First check failed)
(no output)
(Second check failed)
*shake*
(Third check failed)
*shake*
*shake*
*shake*
(All checks pass)
*shake*
*shake*
*shake*
Click!
(यह एक टाइपो नहीं है, आपके प्रोग्राम को कभी भी दो शेक का आउटपुट नहीं देना चाहिए।)
यह कोड-गोल्फ है , इसलिए आपका स्कोर आपके प्रोग्राम का सोर्स कोड बाइट काउंट है। सबसे कम स्कोर जीतता है।
बोनस!
मैंने कहा कि आप मान सकते हैं कि पोकेमॉन 1 एचपी और सो रहा है। वैकल्पिक रूप से, आप उपयोगकर्ता को पोकेमॉन के वर्तमान एचपी और इनपुट करने की अनुमति दे सकते हैं bonus_status। पोकेमॉन का वर्तमान एचपी हमेशा अपने अधिकतम एचपी के बराबर या उससे कम पूर्णांक bonus_statusहोगा , और हमेशा 2.5, 1.5 या 1. होगा। यदि आप ऐसा करते हैं, तो आपके इनपुट के अंत में आपके पास ये मान होना चाहिए, और 1 के लिए डिफ़ॉल्ट होगा। 2.5 अगर वे आपूर्ति नहीं कर रहे हैं। आप इनमें से किसी एक को लागू करने के लिए अपने अंक से 15 अंक या दोनों के लिए 25 घटा सकते हैं ।
इसके अतिरिक्त, आप महत्वपूर्ण कैप्चर लागू कर सकते हैं। यदि एक महत्वपूर्ण कब्जा होता है, तो केवल एक हिला परीक्षण किया जाता है। यदि विफल रहा, तो कार्यक्रम चुपचाप बाहर निकल जाता है। यदि पारित हो गया, तो यह आउटपुट:
*shake*
Click!
क्रिटिकल कैप्चर अधिक सामान्य हो जाते हैं क्योंकि खिलाड़ी अधिक पोकेमॉन एकत्र करता है, लेकिन सादगी के लिए हम यह मान सकते हैं कि वे पहले से ही "सभी को" पकड़ चुके हैं। यदि 0 और 2047 के बीच एक बेतरतीब ढंग से उत्पन्न संख्या a(पहली गणना का परिणाम) 2.5 से कम है, तो यह एक महत्वपूर्ण कब्जा है। महत्वपूर्ण कैप्चर के लिए समर्थन आपको अपने स्कोर से 25 अंक निकालने की अनुमति देता है ।
कई अन्य पोकेबल्स हैं जिनका आप समर्थन करना चुन सकते हैं। उनके नाम और पकड़ गुणक यहां सूचीबद्ध हैं:
Safari | 1.5
Sport | 1.5
Lure | 3
Net | 3
Dusk | 3.5
Dive | 3.5
Moon | 4
Fast | 4
Quick | 5
Love | 8
इनमें से प्रत्येक गेंद के लिए आप समर्थन जोड़ते हैं, आप अपने स्कोर से (गेंद के नाम की लंबाई 5) घटा सकते हैं ।
अंत में, किक के लिए, इन सभी बोनस (वर्तमान एचपी और बोनस_स्टैटस को स्टैडिन, महत्वपूर्ण कैप्चर और सभी 10 वैकल्पिक गेंदों) से प्राप्त करना, आपको कुल 150 बोनस के लिए, अपने स्कोर से हटाए गए 7 अंकों का अतिरिक्त इनाम देगा ।
उदाहरण इनपुट / आउटपुट
बस यह सुनिश्चित करने के लिए कि हम एक ही पृष्ठ पर हैं।
$ ./balls <<< "19,Ultra,255"
*shake*
*shake*
*shake*
Click!
गुड लक, और खुश गोल्फ!
65536 / (255 / a)^(1/4)1 से अधिक है, तो जांच स्वचालित रूप से सफल होती है। मुझे यकीन नहीं है कि दूसरे प्रश्न से आपका क्या मतलब है।
rnd < pइसका मतलब है कि चेक rnd0 और 1. की सीमा के साथ सफल है
65536 / (255 / a)^(1/4), तो यदि यादृच्छिक संख्या कम है तो शेक टेस्ट सफल हुआ
65536 / (255 / a)^(1/4)सकते हैं, लेकिन मेरी हिम्मत कहती है कि यह 1 से अधिक है। क्या आप 0 से 65536 की सीमा में एक यादृच्छिक संख्या के खिलाफ जांच करते हैं? क्या रैंडम नंबर बड़ा है या कम है तो चेक सफल होता है?