Python Programming

Python में दक्ष रोमन संख्यांक रूपांतरण

Spread the love

यह लेख पूर्णांकों को रोमन अंकों में बदलने के दो पायथन तरीकों का पता लगाता है। हम एक सरल पुनरावृति दृष्टिकोण और पूर्णांक विभाजन का उपयोग करने वाली अधिक कुशल विधि की जांच करेंगे।

विषयवस्तु की तालिका

  1. पुनरावृति दृष्टिकोण पूर्णांक-से-रोमन रूपांतरण के लिए
  2. पूर्णांक विभाजन का उपयोग करके कुशल रूपांतरण

पुनरावृति दृष्टिकोण पूर्णांक-से-रोमन रूपांतरण के लिए

यह विधि रोमन अंकों को उनके पूर्णांक मानों से मैप करने वाले एक शब्दकोश का उपयोग करती है और रोमन अंक निरूपण के निर्माण के लिए इसके माध्यम से पुनरावृति करती है। घटाव संकेतन (जैसे कि 4 के लिए IV) को स्पष्ट रूप से संभाला जाता है।


def int_to_roman_iterative(num):
    """पुनरावृति का उपयोग करके एक पूर्णांक को उसके रोमन अंक निरूपण में परिवर्तित करता है।

    Args:
        num: परिवर्तित करने के लिए पूर्णांक (1 और 3999 के बीच समावेशी होना चाहिए)।

    Returns:
        पूर्णांक का रोमन अंक निरूपण, या यदि इनपुट अमान्य है तो None।
    """
    if not 1 <= num = value:
            result += symbol
            num -= value
    return result

# उदाहरण उपयोग
print(int_to_roman_iterative(3))   # आउटपुट: III
print(int_to_roman_iterative(4))   # आउटपुट: IV
print(int_to_roman_iterative(9))   # आउटपुट: IX
print(int_to_roman_iterative(58))  # आउटपुट: LVIII
print(int_to_roman_iterative(1994)) # आउटपुट: MCMXCIV
print(int_to_roman_iterative(4000)) # आउटपुट: None

यह दृष्टिकोण समझने में आसान है लेकिन while लूप के भीतर बार-बार घटाव के कारण बड़ी संख्याओं के लिए कम कुशल हो सकता है।

पूर्णांक विभाजन का उपयोग करके कुशल रूपांतरण

यह विधि बड़ी पूर्णांकों को कुशलतापूर्वक संभालने के लिए पूर्णांक विभाजन और मॉड्यूलो ऑपरेटर का उपयोग करती है। यह रोमन अंक मैपिंग के माध्यम से केवल एक बार पुनरावृति करता है।


def int_to_roman_division(num):
    """विभाजन का उपयोग करके एक पूर्णांक को उसके रोमन अंक निरूपण में परिवर्तित करता है।

    Args:
        num: परिवर्तित करने के लिए पूर्णांक (1 और 3999 के बीच समावेशी होना चाहिए)।

    Returns:
        पूर्णांक का रोमन अंक निरूपण, या यदि इनपुट अमान्य है तो None।
    """
    if not 1 <= num <= 3999:
        return None

    roman_map = { 1000: 'M', 900: 'CM', 500: 'D', 400: 'CD', 100: 'C', 90: 'XC',
                  50: 'L', 40: 'XL', 10: 'X', 9: 'IX', 5: 'V', 4: 'IV', 1: 'I'}

    result = ""
    for value, symbol in roman_map.items():
        result += symbol * (num // value)
        num %= value
    return result

# उदाहरण उपयोग
print(int_to_roman_division(3))   # आउटपुट: III
print(int_to_roman_division(4))   # आउटपुट: IV
print(int_to_roman_division(9))   # आउटपुट: IX
print(int_to_roman_division(58))  # आउटपुट: LVIII
print(int_to_roman_division(1994)) # आउटपुट: MCMXCIV
print(int_to_roman_division(4000)) # आउटपुट: None

यह विभाजन-आधारित दृष्टिकोण, विशेष रूप से बड़ी इनपुट संख्याओं के लिए, अनावश्यक कार्यों को कम करके बेहतर प्रदर्शन प्रदान करता है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *