Како да направите преводилац Морзеовог кода користећи Питхон

Морзеов код је метод за кодирање поруке помоћу тачака, цртица и размака. Широко се користи за тајно преношење порука.

Можда сте видели употребу Морзеовог кода у морнаричким сценама многих филмова за преношење порука. Овде говоримо о истом Морзеовом коду, али једина разлика је у томе што ћемо написати Питхон програм који ће преводити са енглеског на Морзеов код и обрнуто.

Морзеов код

Морзеов код има различите обрасце за свако енглеско писмо, број, интерпункцију и нелатинске знакове. Једном када знате обрасце Морзе кода за различите знакове, биће их лако кодирати и декодирати. Можете погледати страницу Морзеове азбуке на Википедији за више детаља и образаца.

У овом водичу ћемо научити како да кодирамо обичан енглески текст у Морзеов код и обрнуто. Користићемо енглеско писмо, бројеве и интерпункцију док кодирамо декодирање. Ако желите да додате више типова знакова, то можете лако да урадите када научите основе кодирања и декодирања.

Једна ствар коју треба запамтити је да и велика и мала писма имају исти образац Морзеовог кода. То је зато што се Морзеова азбука углавном користи за комуникацију која не мари за случајеве абецеде као што су свакодневни разговори.

Хајде да пређемо на део кодирања за кодирање и декодирање.

енглески на Морзеов код

Алгоритам за претварање обичног енглеског текста у Морзеов код је једноставан. Хајде да проверимо алгоритам.

  • Направите речник са мапирањем образаца Морзеовог кода са енглеским алфабетима, бројевима и интерпункцијама.
  • Пређите преко текста и додајте образац Морзеове азбуке за сваки текстуални знак у резултат.
    • Морзеов код садржи размак после сваког знака и двоструки размак после сваке речи.
    • Дакле, када наиђемо на размак у тексту, који је сепаратор за речи, треба да додамо двоструки размак у резултат.
  • Резултирајући низ ће бити Морзеов код који нам је био потребан.
  • На крају, вратите резултат.
  •   Како препознати слику генерисану вештачком интелигенцијом: 4 начина

    Покушајте да напишете код у Питхон-у. Не брините, чак и ако нисте у стању да то напишете у потпуности.

    Хајде да проверимо код за кодирање обичног енглеског текста у Морзеов код.

    # 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(
        'techblog.co.rs produces high-quality technology & finance articles, makes tools, and APIs to help businesses and people grow.'
    )
    print(morse_code)

    Излаз Морзеове азбуке можете видети испод. Такође би требало да видите сличан Морзеов код у свом терминалу ако нисте променили поруку.

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

    Ура! добили смо Морзеову азбуку. Знаш шта долази после.

      Како да видите који уређаји користе ваш Амазон Видео налог

    Пре него што пређемо на програм за декодирање, хајде да се мало зауставимо и размислимо како да напишемо код за његово декодирање.

    Требало је да размислите о томе да преокренете речник ЦХАРС_ТО_МОРСЕ_ЦОДЕ_МАППИНГ као један од корака. Ручно то радити је ужурбано и потребно га је ажурирати кад год се оригинално мапирање промени. Хајде да напишемо код за обрнути речник.

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

    Ми само мењамо парове кључ-вредност датог речника са горњим кодом. Резултујући речник ће садржати вредности су нове кључеве и кључеве као нове вредности.

    Имамо све делове за декодирање Морзеове азбуке у обичан енглески текст. Без даљег одлагања, хајде да дешифрујемо Морзеову азбуку.

    Морзеов код на енглески

    Можемо да обрнемо процес кодирања Морзеовог кода да бисмо добили алгоритам за декодирање. Хајде да видимо алгоритам за декодирање Морзеове азбуке у обичан енглески текст.

  • Обрните речник ЦХАРС_ТО_МОРСЕ_ЦОДЕ_МАППИНГ користећи утил функцију коју смо написали.
  • Итерирајте преко Морзеове азбуке и пратите тренутни знак Морзеове азбуке.
    • Ако наиђемо на размак, то значи да имамо комплетан Морзеов знак за декодирање.
      • Ако је тренутни знак Морзеовог кода празан и имамо два узастопна размака, додајте сепаратор речи који је један размак у обичном енглеском тексту.
      • Ако је горњи услов нетачан, онда узмите декодирани знак из речника и додајте га резултату. Ресетујте тренутни знак Морзеове азбуке.
    • Ако нисмо наишли на размак, додајте га тренутном Морзеовом знаку.
  • Ако постоји последњи знак, додајте га резултату након декодирања помоћу речника.
  • Вратите резултат на крају.
  • Хајде да проверимо код за горњи алгоритам.

    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)

    Дао сам Морзеов код који се генерише из функције кодирања. Добићемо следећи излаз ако покренемо горњи програм.

    techblog.co.rs PRODUCES HIGH-QUALITY TECHNOLOGY & FINANCE ARTICLES, MAKES TOOLS, AND APIS TO HELP BUSINESSES AND PEOPLE GROW.

    Напомена: излаз је на енглеском великом абецеди јер смо користили велико писмо за мапирање у речнику.

      16 најбољих Нинтендо Свитцх слушалица за боље искуство играња

    Завршне речи

    Видели смо да је излаз функције за декодирање написан великим словима. Можете побољшати програм тако што ћете направити излаз какав је у датом времену праћењем малих и великих слова енглеског алфабета. Ово није повезано са Морзеовом азбуком, јер и велика и мала слова имају исти образац. Пробајте, јер је забавније кодирати.

    То је то за овај туторијал. Користите програме које смо написали када следећи пут наиђете на Морзеову азбуку.

    Срећно кодирање 👨‍💻

    Такође можете погледати како да направите случајну лозинку у Питхон-у.