पृष्ठभूमि
टेबलटॉप रोल-प्लेइंग गेम में एन्नुइ का एक स्रोत कई पासा को शामिल करने वाले रोल के साथ काम कर रहा है। एक विघटन मंत्र को कास्टिंग करना तात्कालिक हो सकता है, लेकिन 40 पासा को एक साथ जोड़ना और जोड़ना निश्चित रूप से नहीं है!
इसे संभालने के लिए कई सुझावों पर RPG.stackexchange.com पर चर्चा की गई है । हालांकि, उनमें से कुछ, जैसे कि एक रोलर प्रोग्राम या औसत पासा का उपयोग करना, खिलाड़ियों से कुछ मजेदार और नियंत्रण की भावना को दूर करता है। अन्य, जैसे 4 पासा को रोल करना और कुल को 10 से गुणा करना, परिणाम को और अधिक आकर्षक बनाते हैं (जबकि विपरीत दिशा में पासा कार्य करता है)।
यह प्रश्न औसत परिणाम (माध्य) या इसकी स्विंगनेस (विचरण) को बदले बिना पासा रोल की संख्या को कम करने की एक विधि की चिंता करता है ।
अंकन और गणित
इस प्रश्न में, हम पासा रोल का प्रतिनिधित्व करने के लिए निम्नलिखित अधिसूचना का उपयोग करेंगे:
- n d k (जैसे 40d6) एक k- पक्षीय मरने के n रोल के योग को संदर्भित करता है।
- n d k * c (जैसे 4d6 * 10) एक स्थिर c द्वारा परिणाम को गुणा करने का वर्णन करता है।
- हम रोल (जैसे 4d6 * 10 + 40d6) और स्थिरांक (जैसे 4d6 + 10) भी जोड़ सकते हैं।
एकल डाई रोल के लिए, हम यह दिखा सकते हैं:
- माध्य : E [1d k ] = (k + 1) / 2
- भिन्न : वार (१ डी के ) = (के -1) (के + १) / १२
माध्य और विचरण के मूल गुणों का उपयोग करते हुए, हम आगे भी इसका अनुमान लगा सकते हैं:
- मीन : ई [ मीटर घ कश्मीर * एक + एन डी एल * ख + ग ] = हूं करें.ई. [1 दिन कश्मीर ] अरब [1 दिन। एल ] ग
- भिन्न : वर ( m d k * a + n d l * b + c ] = a m । M .Var (1d k ) + b ²। N .Var (1d l )
कार्य
तीन पूर्णांक n , k और r को देखते हुए , आपके प्रोग्राम को निम्नलिखित बाधाओं के साथ, अधिकांश r रोल्स में n d k सन्निकट करने का एक तरीका आउटपुट करना चाहिए :
- समाधान में n d k के समान माध्य और विचरण होना चाहिए ।
- समाधान में r की तुलना में कम या बराबर रोल की सबसे बड़ी संभव संख्या होनी चाहिए , क्योंकि अधिक रोल एक चिकनी वितरण का उत्पादन करता है।
- आप केवल उपयोग करने के लिए अपने समाधान सीमित होना चाहिए कश्मीर तरफा पासा, जब तक आप (देखें नीचे) बोनस के लिए लक्ष्य कर रहे हैं।
- यदि कोई समाधान नहीं है (जैसा कि आर बहुत छोटा है), तो प्रोग्राम को स्ट्रिंग "आई एएम ए सेक्सी शोल्ड गॉड ऑफ वॉर" का उत्पादन करना चाहिए।
- मापदंडों को एक ही स्थान-पृथक स्ट्रिंग के रूप में पारित किया जाता है।
- आप मान सकते हैं कि 1 ≤ n ≤ 100, 1 ≤ आर ≤ n और कहा कि कश्मीर 4, 6, 8, 10, 12 और 20 (मानक मेज में इस्तेमाल पासा) में से एक है।
- आउटपुट नोटेशन में वर्णित प्रारूप में होना चाहिए (उदाहरण 4d6 * 10 + 5), वैकल्पिक स्थानों के साथ + s लेकिन कहीं और नहीं। यूनिट मल्टीप्लायर भी वैकल्पिक हैं: 4d6 * 1 और 4d6 दोनों मान्य हैं।
आप STDIN (या निकटतम वैकल्पिक), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट लेकर एक प्रोग्राम या फ़ंक्शन लिख सकते हैं। परिणामों को STDOUT (या निकटतम विकल्प) पर मुद्रित किया जाना चाहिए या एक स्ट्रिंग के रूप में लौटाया जाना चाहिए।
उदाहरण
>> "10 6 10"
10d6
>> "10 6 4"
2d6*2+2d6+14
>> "10 6 3"
1d6*3+1d6+21
>> "10 6 2"
1d6*3+1d6+21
>> "10 6 1"
I AM A SEXY SHOELESS GOD OF WAR!
स्कोरिंग
सबसे छोटा कोड जीतता है। मानक नियम लागू होते हैं।
बोनस
-33% (घटाव से पहले राउंड डाउन) यदि आपका प्रोग्राम समाधान भी लौटाता है जिसमें कश्मीर के अलावा वैध पासा शामिल है (जहाँ मान्य मूल्य, जैसा कि ऊपर बताया गया है, 4, 6, 8, 10, 12 और 20 हैं)। यदि आप ऐसा करने के लिए चुनते हैं, तो आपको हमेशा उचित होने पर ऐसे समाधान वापस करने चाहिए , और उन समाधानों को संभालना चाहिए जो कई प्रकार के डाई का उपयोग करते हैं। उदाहरण:
>> "7 4 3"
3d6+7