ट्रैक
/
Swift
Swift
/
अभ्यास
/
रोमन अंक
रोमन अंक

रोमन अंक

मध्यम

परिचय

आज दुनिया में अधिकांश लोग अरबी अंक (0–9) इस्तेमाल करते हैं। लेकिन अगर आप दो हज़ार साल पीछे चले जाएँ, तो पाएँगे कि अधिकांश यूरोपीय लोग इसके बजाय रोमन अंक इस्तेमाल करते थे।

रोमन अंक लिखने के लिए हम निम्नलिखित लैटिन अक्षर इस्तेमाल करते हैं, जिनमें से हर अक्षर की एक वैल्यू होती है:

M D C L X V I
1000 500 100 50 10 5 1

एक रोमन अंक इन अक्षरों का एक क्रम होता है, और उसकी वैल्यू अक्षरों की वैल्यू का जोड़ होती है। उदाहरण के लिए, XVIII की वैल्यू 18 होती है (10 + 5 + 1 + 1 + 1 = 18)।

हालाँकि एक नियम चीज़ों को और मुश्किल बना देता है: एक ही अक्षर लगातार तीन बार से अधिक इस्तेमाल नहीं किया जा सकता। इसका मतलब है कि हम 4 जैसी संख्याओं को उस सहज लगने वाले IIII से नहीं लिख सकते। इसके बजाय, ऐसी संख्याओं के लिए हम दो अक्षरों के बीच घटाने का तरीका इस्तेमाल करते हैं। तो हम 4 को 1 + 1 + 1 + 1 नहीं, बल्कि 5 - 1 के रूप में देखते हैं। और हमारी आधुनिक सोच के लिए थोड़ा उलझाने वाला यह है कि हम छोटी संख्या पहले लिखते हैं। यह केवल इन मामलों में लागू होता है: 4 (IV), 9 (IX), 40 (XL), 90 (XC), 400 (CD) और 900 (CM)।

रोमन अंकों में क्रम मायने रखता है! अक्षरों (और ऊपर दिए गए विशेष संयोजनों) को बाएँ से दाएँ घटती वैल्यू के क्रम में रखना होता है।

यहाँ कुछ उदाहरण दिए गए हैं:

 105 => CV
---- => --
 100 => C
+  5 =>  V
 106 => CVI
---- => --
 100 => C
+  5 =>  V
+  1 =>   I
 104 => CIV
---- => ---
 100 => C
+  4 =>  IV

और अंत में एक अधिक जटिल उदाहरण:

 1996 => MCMXCVI
----- => -------
 1000 => M
+ 900 =>  CM
+  90 =>    XC
+   5 =>      V
+   1 =>       I

निर्देश

आपको एक संख्या को अरबी अंकों से रोमन अंकों में बदलना है।

इस अभ्यास में हमारा ध्यान केवल पारंपरिक रोमन अंकों पर है। इनमें सबसे बड़ी संख्या MMMCMXCIX (या 3,999) है।

Note

अरबी और रोमन अंकों के बीच बदलने के बहुत सारे अलग-अलग तरीके हैं। हम सुझाव देते हैं कि पहले एक सरल तरीका अपनाइए, ताकि आप रोमन अंकों की अवधारणा से परिचित हो जाएँ, और फिर अधिक कुशल तरीके खोजिए।

अंत में हमारे Deep Dive वीडियो को ज़रूर देखिए, ताकि आप जान सकें कि आप कौन-कौन से अलग-अलग तरीके अपना सकते हैं!

ट्रैक के विशिष्ट निर्देश

इस अभ्यास का ध्यान Swift में Int स्ट्रक्चर में मेथड जोड़ने पर है। यह काम एक्सटेंशन का उपयोग करके सबसे आसानी से होता है।

extension Int {
  // 
}

Int का डॉक्यूमेंटेशन यहाँ मिल सकता है।


स्रोत

The Roman Numeral Kataयह लिंक एक नई विंडो या टैब में खुलता है
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Swift Exercism

रोमन अंक शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Swift को 35 कॉन्सेप्ट116 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।

रोमन अंक को गहराई से जानिए!

इस मुश्किल अभ्यास के अलग-अलग तरह के हल जानिए। इनमें रिकर्शन से लेकर टेबल-आधारित लुकअप तक शामिल हैं, साथ ही एक ऐसा हल जो मिश्रित रेडिक्स संख्याएँ इस्तेमाल करता है, और Common Lisp की थोड़ी-सी सीधी चीटिंग भी।