Python Programming

Python में लुह्न एल्गोरिथम में महारथ: चार क्रियान्वयन

Spread the love

लुहन एल्गोरिथ्म एक सरल चेकसम फॉर्मूला है जिसका उपयोग विभिन्न पहचान संख्याओं, जिसमें क्रेडिट कार्ड नंबर और IMEI नंबर शामिल हैं, को मान्य करने के लिए किया जाता है। यह डेटा अखंडता बनाए रखने और इनपुट के दौरान त्रुटियों का पता लगाने के लिए एक मूल्यवान उपकरण है। यह लेख लुहन एल्गोरिथ्म के विभिन्न पायथन कार्यान्वयन का पता लगाता है, जिसमें विभिन्न प्रोग्रामिंग शैलियों और उनकी सापेक्ष दक्षता को दिखाया गया है।

विषय सूची

बेसिक कार्यान्वयन

लुहन एल्गोरिथ्म में ये चरण शामिल हैं:

  1. दायीं से बायीं ओर हर दूसरे अंक को दोगुना करें।
  2. यदि दोगुना मान 9 से अधिक है, तो 9 घटाएँ।
  3. सभी अंकों का योग करें।
  4. यदि कुल मॉडुलो 10 0 है, तो संख्या मान्य है; अन्यथा, यह अमान्य है।

यहाँ एक सीधा पायथन कार्यान्वयन दिया गया है:


def luhn_check(number):
    try:
        digits = [int(d) for d in str(number)]
    except ValueError:
        return False

    odd_sum = sum(digits[-1::-2])
    even_sum = sum([sum(divmod(2 * d, 10)) for d in digits[-2::-2]])
    return (odd_sum + even_sum) % 10 == 0

number1 = 49927398716
number2 = 1234567890123456

print(f"क्या {number1} मान्य है? {luhn_check(number1)}")  # आउटपुट: True
print(f"क्या {number2} मान्य है? {luhn_check(number2)}")  # आउटपुट: False

कार्यात्मक अपघटन

सुधारित पठनीयता और रखरखाव के लिए, हम एल्गोरिथ्म को छोटे, अधिक केंद्रित कार्यों में विभाजित कर सकते हैं:


def double_digit(digit):
    return sum(divmod(2 * digit, 10))

def sum_digits(digits):
    return sum(digits)

def luhn_check_functional(number):
    try:
        digits = [int(d) for d in str(number)]
    except ValueError:
        return False
    odd_sum = sum_digits(digits[-1::-2])
    even_sum = sum_digits([double_digit(d) for d in digits[-2::-2]])
    return (odd_sum + even_sum) % 10 == 0

print(f"क्या {number1} मान्य है (कार्यात्मक)? {luhn_check_functional(number1)}")  # आउटपुट: True
print(f"क्या {number2} मान्य है (कार्यात्मक)? {luhn_check_functional(number2)}")  # आउटपुट: False

पुनरावृति दृष्टिकोण (सन्निहित लूप्स)

सन्निहित लूप्स का उपयोग करते हुए एक पुनरावृति दृष्टिकोण, हालांकि कम कुशल, एल्गोरिथ्म का एक स्पष्ट चरण-दर-चरण चित्रण प्रदान करता है (मुख्य रूप से शैक्षिक उद्देश्यों के लिए):


def luhn_check_iterative(number):
    try:
        digits = [int(x) for x in str(number)]
    except ValueError:
        return False
    total = 0
    for i in range(len(digits) - 1, -1, -1):
        if i % 2 == 0:
            total += digits[i]
        else:
            doubled = digits[i] * 2
            if doubled > 9:
                doubled -= 9
            total += doubled
    return total % 10 == 0

print(f"क्या {number1} मान्य है (पुनरावृति)? {luhn_check_iterative(number1)}")  # आउटपुट: True
print(f"क्या {number2} मान्य है (पुनरावृति)? {luhn_check_iterative(number2)}")  # आउटपुट: False

उन्नत कार्यात्मक प्रोग्रामिंग

पायथन के map और reduce कार्यों का लाभ उठाना कार्यात्मक दृष्टिकोण को और बढ़ाता है:


from functools import reduce

def luhn_check_fp(number):
    try:
        digits = list(map(int, str(number)))
    except ValueError:
        return False
    odd_sum = sum(digits[-1::-2])
    even_sum = reduce(lambda x, y: x + y, map(lambda d: sum(divmod(2 * d, 10)), digits[-2::-2]))
    return (odd_sum + even_sum) % 10 == 0

print(f"क्या {number1} मान्य है (कार्यात्मक प्रोग्रामिंग)? {luhn_check_fp(number1)}")  # आउटपुट: True
print(f"क्या {number2} मान्य है (कार्यात्मक प्रोग्रामिंग)? {luhn_check_fp(number2)}")  # आउटपुट: False

निष्कर्ष

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

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

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