पृष्ठभूमि
यह चुनौती इस वेबसाइट से प्रेरित है , जिसने निम्नलिखित चित्र प्रकाशित किया है:
यह आरेख हमें दिखाता है कि 250 के तहत सबसे लंबी रोमन न्यूमेरल अभिव्यक्ति 188 की है, जिसे व्यक्त करने के लिए 9 अंकों की आवश्यकता होती है।
चुनौती
मानक सबसे रोमन अंकों व्यक्त करने के लिए इस्तेमाल किया प्रतीकों निम्नलिखित हैं: { I
, V
, X
, L
, C
, D
, M
}, जहां पात्रों के संख्यात्मक मान रहे हैं M
= 1000, D
= 500, C
= 100, L
= 50, X
= 10, V
= 5, I
= 1।
इस चुनौती में, आपका लक्ष्य एक सकारात्मक पूर्णांक n दिया गया है, मान्य रोमन न्यूमेरिकल निरूपणों की संख्या की गणना करें, जो मानक प्रतीकों के समवर्ती n के माध्यम से बनाए जा सकते हैं ।
फिर, आपके प्रोग्राम को इस अभिकलन के परिणाम का उत्पादन करना चाहिए!
इनपुट : एक सकारात्मक पूर्णांक एन ।
आउटपुट : लंबाई के मान्य रोमन अंक अभिव्यक्तियों की संख्या n ।
रोमन न्यूमेरिकल एक्सप्रेशंस के नियम
रोमन संख्याएं मूल रूप से केवल "योगात्मक" जोड़ी थी, जिसका अर्थ है कि अंकों को हमेशा अवरोही क्रम में लिखा गया था, और सभी अंकों के मूल्यों का योग संख्या का मूल्य था।
बाद में, जोड़-तोड़ करने वाले जोड़, छोटे से बड़े को घटाने के लिए एक छोटे से अंक को बड़े के सामने रखने का उपयोग रोमन न्यूमेरल अभिव्यक्तियों को छोटा करने के लिए आम हो गया। घटिया जोड़े को जंजीर में नहीं डाला जा सकता है, जैसे कि निम्नलिखित अमान्य अभिव्यक्ति में IXL
:।
एडिटिव और सबट्रेक्टिव पेयरिंग के लिए आधुनिक दिन के नियम निम्नलिखित हैं।
- केवल एक I, X, और C को घटाव जोड़ी के भाग में अग्रणी संख्या के रूप में उपयोग किया जा सकता है।
- मुझे केवल एक जोड़-तोड़ जोड़ी में वी या एक्स से पहले रखा जा सकता है।
- एक्स को केवल एक अव्यावहारिक जोड़ी में L या C से पहले रखा जा सकता है।
- सी को केवल डी या एम से पहले एक अव्यावहारिक जोड़ी में रखा जा सकता है।
- घटाए जाने वाले जोड़े के अलावा, अंकों को अवरोही क्रम में होना चाहिए (इसका अर्थ है कि यदि आप प्रत्येक घटाए गए जोड़े की अग्रणी संख्या को छोड़ते हैं, तो अंक अवरोही क्रम में होंगे)।
- M, C, और X को छोटे संप्रदायों के बराबर या अधिक नहीं किया जा सकता है।
- डी, एल, और वी केवल एक बार दिखाई दे सकते हैं।
- केवल M को 4 या अधिक बार दोहराया जा सकता है।
आगे के नोट
हम बार संकेतन का उपयोग नहीं करेंगे ; बल्कि, हम किसी भी संख्या को व्यक्त करने के लिए और अधिक एम जोड़ेंगे ।
ये एकमात्र नियम हैं जो हम अपने रोमन अंकों के लिए अनुसरण करेंगे। इसका अर्थ है कि विषम भाव, जैसे कि
IVI
, हमारी प्रणाली में भी मान्य माने जाएंगे।यह भी याद रखें कि हम उन संख्याओं की गिनती नहीं कर रहे हैं जिनकी लंबाई n की अभिव्यक्ति है , क्योंकि कुछ संख्याओं में कई अभिव्यक्तियाँ हैं। इसके बजाय, हम पूरी तरह से मान्य अभिव्यक्तियों की संख्या की गिनती कर रहे हैं।
परीक्षण के मामलों
1
→ 7
2
→ 31
3
→ 105
मैंने हाथ से ऊपर की जाँच की है, इसलिए कृपया परीक्षण के मामलों की दोहरी जांच करना सुनिश्चित करें, और यदि आप कर सकते हैं तो अधिक जोड़ें!
जीत का मानदंड
यह एक कोड-गोल्फ चुनौती है, इसलिए मज़े करो! मैं केवल उन समाधानों को स्वीकार करूंगा जो 9 में से कम से कम आदानों को संभाल सकते हैं। 9. कोई और बोनस है!
संपादित करें
जैसा कि टिप्पणीकारों ने अनुरोध किया है, नीचे पाएं, या इस पास्टबिन लिंक पर, 105 कॉम्बोस I की गणना n = 3 के लिए की गई है
III IVI IXI IXV IXX VII XII XIV XIX XVI XXI XXV XXX XLI XLV XXX XCX XCX XCL XCC XII LII LIV LVI LXI LXI LXV LII CIV CIX CVI CXI CXV CXC CXC CXC CXC CLI CLV CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLX CLASSIC। सीएमआई सीएमवी सीएमएक्स सीएमएल सीएमसी सीएमडी सीएमडी डीआईएम डीआईवाई डिक्स डीएक्सआई डीएक्सआई डीएक्सवी डीएक्सएल डीएक्सएल डीएलआई डीएलआई डीएलवी डीएलएक्स डीसीआई डीसीएक्स डीसीएल डीसीएल डीसीएल डीसीआई एमआइवी मिक्स एमवीएक्स एमएक्सएक्स एमएक्सवी एमएक्सएल एमएक्सएल एमएलसी एमएलवी एमसीएक्स एमसीएक्स एमसीएल एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स एमसीएक्स डीसीएक्स एमएमएक्स एमएमएल एमएमसी एमएमडी एमएमएम
2 संपादित करें:
अपने परिणामों की जांच करने के लिए, जोनाथन एलन के सौजन्य से निम्नलिखित गैर-गोल्फ कोड का उपयोग करें ।
संपादित करें 3:
मैं इस चुनौती में सभी त्रुटियों के लिए माफी माँगता हूँ। मैं अगली बार एक बेहतर काम करना सुनिश्चित करूँगा!