كيفية إنشاء مترجم شفرة مورس باستخدام بايثون

شفرة مورس هي طريقة لترميز رسالة باستخدام النقاط والشرطات والمسافات. يستخدم على نطاق واسع لتوصيل الرسائل سرا.

ربما تكون قد شاهدت استخدام رمز مورس في مشاهد بحرية للعديد من الأفلام لتوصيل الرسائل. نحن نتحدث عن نفس كود مورس هنا ، لكن الاختلاف الوحيد هو أننا سنكتب برنامج بايثون للترجمة من الإنجليزية إلى كود مورس والعكس صحيح.

شيفرة مورس

تحتوي شفرة مورس على أنماط مختلفة لكل من الأبجدية الإنجليزية والأرقام وعلامات الترقيم والأحرف غير اللاتينية. بمجرد أن تعرف أنماط كود مورس لأحرف مختلفة ، سيكون من السهل تشفيرها وفك تشفيرها. يمكنك الرجوع إلى صفحة ويكيبيديا الخاصة برمز مورس لمزيد من التفاصيل والأنماط.

في هذا البرنامج التعليمي ، سوف نتعلم كيفية تشفير نص إنجليزي عادي إلى كود مورس والعكس صحيح. سنستخدم الحروف الهجائية والأرقام وعلامات الترقيم الإنجليزية أثناء تشفير فك التشفير. إذا كنت ترغب في إضافة المزيد من أنواع الأحرف ، فيمكنك القيام بذلك بسهولة بمجرد معرفة قاعدة التشفير وفك التشفير.

شيء واحد يجب تذكره هو أن الحروف الهجائية الكبيرة والصغيرة لها نفس نمط رمز مورس. هذا لأن رمز مورس يستخدم بشكل أساسي للتواصل الذي لا يهتم بالحالات الأبجدية مثل المحادثات اليومية.

دعنا ندخل في جزء الترميز الخاص بالتشفير وفك التشفير.

الإنجليزية إلى شفرة مورس

تعد الخوارزمية الخاصة بتحويل النص الإنجليزي العادي إلى رمز مورس واضحة ومباشرة. دعنا نتحقق من الخوارزمية.

  • قم بإنشاء قاموس مع تعيينات أنماط رمز مورس مع الأبجدية الإنجليزية والأرقام وعلامات الترقيم.
  • كرر النص وأضف نمط رمز مورس لكل حرف نصي إلى النتيجة.
    • تحتوي شفرة مورس على مسافة بعد كل حرف ومسافة مزدوجة بعد كل كلمة.
    • لذلك عندما نواجه مساحة في النص ، وهو الفاصل بين الكلمات ، نحتاج إلى إضافة مسافة مزدوجة إلى النتيجة.
  • ستكون السلسلة الناتجة هي رمز مورس الذي نحتاجه.
  • أخيرًا ، أعد النتيجة.
  • حاول كتابة الكود بلغة بايثون. لا تقلق ، حتى لو لم تكن قادرًا على كتابتها بالكامل.

      كيفية التركيز باستخدام عدسات ذات فتحة واسعة

    دعنا نتحقق من الكود الخاص بتشفير نص إنجليزي عادي إلى كود مورس.

    # dictionary for mapping characters to morse code
    CHARS_TO_MORSE_CODE_MAPPING = {
        'A': '.-',
        'B': '-...',
        'C': '-.-.',
        'D': '-..',
        'E': '.',
        'F': '..-.',
        'G': '--.',
        'H': '....',
        'I': '..',
        'J': '.---',
        'K': '-.-',
        'L': '.-..',
        'M': '--',
        'N': '-.',
        'O': '---',
        'P': '.--.',
        'Q': '--.-',
        'R': '.-.',
        'S': '...',
        'T': '-',
        'U': '..-',
        'V': '...-',
        'W': '.--',
        'X': '-..-',
        'Y': '-.--',
        'Z': '--..',
        '1': '.----',
        '2': '..---',
        '3': '...--',
        '4': '....-',
        '5': '.....',
        '6': '-....',
        '7': '--...',
        '8': '---..',
        '9': '----.',
        '0': '-----',
        '.': '.-.-.-',
        ',': '--..--',
        '?': '..--..',
        ''': '· − − − − ·',
        '!': '− · − · − −',
        '/': '− · · − ·',
        '(': '− · − − ·',
        ')': '− · − − · −',
        '&': '· − · · ·',
        ':': '− − − · · ·',
        ';': '− · − · − ·',
        '=': '− · · · −',
        '+': '· − · − ·',
        '-': '− · · · · −',
        '_': '· · − − · −',
        '"': '· − · · − ·',
        '$': '· · · − · · −',
        '@': '· − − · − ·',
    }
    
    # function to encode plain English text to morse code
    def to_morse_code(english_plain_text):
        morse_code=""
        for char in english_plain_text:
            # checking for space
            # to add single space after every character and double space after every word
            if char == ' ':
                morse_code += '  '
            else:
                # adding encoded morse code to the result
                morse_code += CHARS_TO_MORSE_CODE_MAPPING[char.upper()] + ' '
        return morse_code
    
    morse_code = to_morse_code(
        'admingate.org produces high-quality technology & finance articles, makes tools, and APIs to help businesses and people grow.'
    )
    print(morse_code)

    يمكنك أن ترى إخراج كود مورس أدناه. يجب أن ترى أيضًا رمز مورس مشابهًا في جهازك إذا لم تقم بتغيير الرسالة.

    --. . . -.- ..-. .-.. .- .-. .   .--. .-. --- -.. ..- -.-. . ...   .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.--   - . -.-. .... -. --- .-.. --- --. -.--   · − · · ·   ..-. .. -. .- -. -.-. .   .- .-. - .. -.-. .-.. . ... --..--   -- .- -.- . ...   - --- --- .-.. ... --..--   .- -. -..   .- .--. .. ...   - ---   .... . .-.. .--.   -... ..- ... .. -. . ... ... . ...   .- -. -..   .--. . --- .--. .-.. .   --. .-. --- .-- .-.-.-

    يا هلا! حصلنا على رمز مورس. أنت تعرف ما سيأتي بعد ذلك.

      9 أفضل حلول النسخ الاحتياطي للبطارية المنزلية لحالات انقطاع التيار الكهربائي غير المتوقعة

    قبل القفز إلى برنامج فك التشفير ، دعنا نتوقف قليلاً ونفكر في كيفية كتابة رمز لفك تشفيره.

    يجب أن تفكر في عكس قاموس CHARS_TO_MORSE_CODE_MAPPING كإحدى الخطوات. يعد القيام بذلك يدويًا أمرًا محمومًا ويحتاج إلى التحديث كلما تم تغيير التعيين الأصلي. دعونا نكتب رمز لعكس القاموس.

    def reverse_mapping(mapping):
        reversed = {}
        for key, value in mapping.items():
            reversed[value] = key
        return reversed

    نحن نعكس فقط أزواج القيمة الرئيسية للقاموس المحدد بالرمز أعلاه. سيحتوي القاموس الناتج على قيم هي مفاتيح ومفاتيح جديدة كقيم جديدة.

    لدينا كل القطع لفك شفرة مورس إلى نص إنجليزي عادي. بدون مزيد من اللغط ، دعنا نفك شفرة مورس.

    شفرة مورس إلى الإنجليزية

    يمكننا عكس عملية ترميز مورس للحصول على خوارزمية فك التشفير. دعونا نرى الخوارزمية لفك شفرة مورس إلى نص إنجليزي عادي.

  • اعكس قاموس CHARS_TO_MORSE_CODE_MAPPING باستخدام وظيفة الاستخدام التي كتبناها.
  • كرر رمز مورس وتتبع رمز مورس الحالي.
    • إذا واجهنا مساحة ، فهذا يعني أن لدينا رمز مورس كامل لفك تشفيره.
      • إذا كان رمز مورس الحالي فارغًا وكان لدينا مسافتان متتاليتان ، فقم بإضافة فاصل كلمة وهو مسافة واحدة في نص إنجليزي عادي.
      • إذا كان الشرط أعلاه خاطئًا ، فاحصل على الحرف الذي تم فك ترميزه من القاموس وأضفه إلى النتيجة. إعادة تعيين رمز مورس الحالي.
    • إذا لم نواجه مساحة ، فقم بإضافتها إلى شخصية مورس الحالية.
  • إذا كان هناك الحرف الأخير ، قم بإضافته إلى النتيجة بعد فك التشفير باستخدام القاموس.
  • أعد النتيجة في النهاية.
  • دعنا نتحقق من رمز الخوارزمية أعلاه.

    def reverse_mapping(mapping):
        # add function code from the previous snippet...
    
    CHARS_TO_MORSE_CODE_MAPPING = {} # add dictionary values 
    MORSE_CODE_TO_CHARS_MAPPING = reverse_mapping(CHARS_TO_MORSE_CODE_MAPPING)
    
    def to_english_plain_text(morse_code):
        english_plain_text=""
    
        current_char_morse_code=""
        i = 0
        while i < len(morse_code) - 1:
            # checking for each character
            if morse_code[i] == ' ':
                # checking for word
                if len(current_char_morse_code) == 0 and morse_code[i + 1] == ' ':
                    english_plain_text += ' '
                    i += 1
                else:
                    # adding decoded character to the result
                    english_plain_text += MORSE_CODE_TO_CHARS_MAPPING[
                        current_char_morse_code]
                    current_char_morse_code=""
            else:
                # adding morse code char to the current character
                current_char_morse_code += morse_code[i]
            i += 1
    
        # adding last character to the result
        if len(current_char_morse_code) > 0:
            english_plain_text += MORSE_CODE_TO_CHARS_MAPPING[
                current_char_morse_code]
    
        return english_plain_text
    
    english_plain_text = to_english_plain_text(
        '--. . . -.- ..-. .-.. .- .-. .   .--. .-. --- -.. ..- -.-. . ...   .... .. --. .... − · · · · − --.- ..- .- .-.. .. - -.--   - . -.-. .... -. --- .-.. --- --. -.--   · − · · ·   ..-. .. -. .- -. -.-. .   .- .-. - .. -.-. .-.. . ... --..--   -- .- -.- . ...   - --- --- .-.. ... --..--   .- -. -..   .- .--. .. ...   - ---   .... . .-.. .--.   -... ..- ... .. -. . ... ... . ...   .- -. -..   .--. . --- .--. .-.. .   --. .-. --- .-- .-.-.- '
    )
    print(english_plain_text)

    لقد قدمت كود مورس الذي تم إنشاؤه من وظيفة الترميز. سوف نحصل على الإخراج التالي إذا قمنا بتشغيل البرنامج أعلاه.

    admingate.org PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.

    ملاحظة: الإخراج بالأحرف الأبجدية الإنجليزية الكبيرة لأننا استخدمنا الأبجدية الكبيرة لرسم الخرائط في القاموس.

      ما هو SSID وكيفية تغييره

    الكلمات الأخيرة

    لقد رأينا أن ناتج وظيفة فك التشفير بأحرف كبيرة. يمكنك تحسين البرنامج عن طريق جعل الإخراج كما هو في الوقت المحدد عن طريق تتبع الحروف الأبجدية الإنجليزية الدنيا والعليا. لا يتعلق هذا بكود مورس ، حيث أن كل من الحالات العلوية والسفلية لها نفس النمط. جربه ، لأنه أكثر متعة في البرمجة.

    هذا كل شيء في هذا البرنامج التعليمي. استخدم البرامج التي كتبناها عندما تواجه رمز مورس في المرة القادمة.

    ترميز سعيد 👨‍💻

    يمكنك أيضًا الاطلاع على كيفية إنشاء كلمة مرور عشوائية في Python.