लक्ष्य:
एक फ़ंक्शन लिखें जो संख्या को इनपुट के रूप में लेता है और आउटपुट के रूप में उस संख्या के लिए एक शॉर्ट-हैंड रोमन अंक लौटाता है।
रोमन अंक चिह्न:
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000
उदाहरण के लिए कि जब मेरा कहना है कि मैं "शॉर्ट-हैंड रोमन अंक" कहता हूं, तो आइए 1983 के प्रतिनिधित्व के लिए एक रोमन अंक खोजने पर विचार करें, क्योंकि यह वह वर्ष है जब मैं पैदा हुआ था। एक विकल्प यह है कि यह सामान्य तरीके से किया जाए (10 अक्षर):
1983 = MCMLXXXIII = (१००० - १०० + १००० + ५० + ३० + ३)
दूसरा विकल्प यह है कि इसे शॉर्ट-हैंड तरीके से किया जाए (6 अक्षर):
1983 = एमएक्सवीआईएम = (1000 - (10 + 10) + 1000 + 3)
क्या आप इसका मतलब जानते है?!?!!?? अगर मैं रोमन होता तो मैं हर बार अपने जन्म की तारीख लिखी 4 पात्रों को बचा सकता था! हुर्रे हुर्रे!!
हालांकि, इससे पहले कि मैं उत्तेजना में खुद से आगे निकल जाऊं, मेरे पास लिखने का सवाल है, इसलिए मुझे शायद शॉर्ट-हैंड रोमन अंक नियमों को परिभाषित करना चाहिए ताकि हम सभी एक ही पृष्ठ पर हों:
लघु-हाथ रोमन अंक नियम:
- हमेशा प्रतीकों को बाएं से दाएं पर तब तक विचार करें जब तक विचार करने के लिए अधिक वर्ण न हों।
- यदि वर्तमान प्रतीक के दाईं ओर कोई उच्च-मूल्यवान चिह्न नहीं हैं:
- इस रोमन अंक के कुल भाग में वर्तमान चिन्ह का मान जोड़ें।
- यदि आपके द्वारा विचार किए जा रहे प्रतीक के दाईं ओर उच्च-मूल्यवान चिह्न हैं:
- वर्तमान चिह्न के दाईं ओर सबसे उच्चतम मूल्यवान मान का पता लगाएँ
- एक रोमन अंक के रूप में उस प्रतीक तक सभी वर्णों पर विचार करें
- इन चरणों का उपयोग करके उस रोमन अंक के मूल्य की गणना करें
- इस रोमन अंक के चल रहे कुल से उस रोमन अंक के मूल्य को घटाएं।
- समूह पर विचार करने के बाद अगले प्रतीक पर जाएं
- प्रत्येक रोमन अंक में कम से कम 1 प्रतीक होना चाहिए।
- बस! इन नियमों का पालन करने पर कुछ भी स्वीकार किया जाएगा!
उदाहरण:
IIIIV = (-(1+1+1+1)+5) = 1 //Don't ask me why you'd want to do this!
VVX = (-(5+5) + 10) = 0 //Who said you couldn't represent 0 with roman numerals?!!?
VVXM = (-(-(5+5) + 10) + 1000) = 1000 //Again...don't ask me why you'd want to do this!
MXIIXMI = (1000-(10-(1+1)+10)+1000+1) = 1983 //Ahhh...such a great year :)
प्रश्न नियम:
एक फ़ंक्शन बनाएं जो इनपुट के रूप में एक एकल संख्या लेता है और उपरोक्त नियमों का उपयोग करके आउटपुट के रूप में उस संख्या के लिए एक रोमन अंक लौटाता है। इस फ़ंक्शन के कोडगोल्फस्कॉर की गणना करें ।
example input: 2011 example possible output: MMXI another possible output: MMVVIVV //(2000 + 10 - 4 + 5)
नियम 1 से अपने फ़ंक्शन का उपयोग करते हुए, -1000 (यह सही है, एक हजार) और 3000 के बीच का रोमन अंक उत्पन्न करें। फिर अपने कुलचक्र प्राप्त करने के लिए इन रोमन अंकों की वर्ण लंबाई का योग करें । यहाँ स्पष्ट करने के लिए कुछ छद्मकोश हैं:
totalCharacterCount = 0; for(currentNumber = -1000; currentNumber <= 3000; currentNumber++){ totalCharacterCount += getRomanNumeral(currentNumber).length; } return totalCharacterCount;
फ़ाइनलकोर = कोडगॉल्फ़स्कोर + टोटलचैकरकाउंट
- सबसे कम अंतिम जीत जीत!
नोट: जैसे कुलचक्र गणना दस-हजारों + में होगी, वर्ण-लंबाई एल्गोरिथ्म सर्वोच्च प्राथमिकता होनी चाहिए। कोड-गोल्फ स्कोर सिर्फ टाई-ब्रेकर हैं यदि कई उपयोगकर्ता इष्टतम एल्गोरिदम या एल्गोरिदम पाते हैं जो एक दूसरे के करीब हैं।
गुड लक, और कल रात अपने MMXII समारोह में मज़े करो !!!
""
शून्य के लिए अनुमति दी गई है या हमें इसका उपयोग करना है VVX
या कुछ समान है?
IXV = -(-1 + 10) + 5 = -4
(सबसे बड़ी जीत है), या IXV = -1 + 10 + 5 = 14
(सर्वोच्च-मूल्यवान जीत)?
DDDDM
लिए खड़ा है-1000
?