Cara Membuat Penerjemah Kode Morse menggunakan Python

Diterbitkan: 2022-10-19

Kode morse adalah metode penyandian pesan dengan menggunakan titik , tanda hubung , dan spasi . Ini banyak digunakan untuk mengkomunikasikan pesan secara diam-diam.

Anda mungkin pernah melihat penggunaan kode morse dalam adegan angkatan laut dari banyak film untuk menyampaikan pesan. Kita berbicara tentang kode morse yang sama di sini, tetapi satu-satunya perbedaan adalah bahwa kita akan menulis program Python untuk menerjemahkan dari bahasa Inggris ke kode Morse dan sebaliknya.

Kode morse

Kode morse memiliki pola yang berbeda untuk setiap huruf, angka, tanda baca, dan karakter non-Latin bahasa Inggris. Setelah Anda mengetahui pola kode morse untuk karakter yang berbeda, akan mudah untuk mengkodekan dan mendekodekannya. Anda dapat merujuk halaman Wikipedia kode morse untuk detail dan pola lebih lanjut.

Kode morse

Dalam tutorial ini, kita akan belajar bagaimana mengkodekan teks bahasa Inggris biasa menjadi kode morse dan sebaliknya. Kami akan menggunakan abjad, angka, dan tanda baca bahasa Inggris saat menyandikan decoding. Jika Anda ingin menambahkan lebih banyak jenis karakter, Anda dapat melakukannya dengan mudah setelah Anda mempelajari dasar encoding dan decoding.

Satu hal yang perlu diingat adalah bahwa huruf besar dan huruf kecil memiliki pola kode morse yang sama. Hal ini dikarenakan kode morse lebih banyak digunakan untuk komunikasi yang tidak memperdulikan huruf-huruf alfabet seperti percakapan sehari-hari.

Mari masuk ke bagian coding untuk encoding dan decoding.

Bahasa Inggris ke kode Morse

Algoritme untuk mengonversi teks bahasa Inggris biasa menjadi kode morse sangatlah mudah. Mari kita periksa algoritmanya.

  1. Buat kamus dengan pemetaan pola kode morse dengan huruf, angka, dan tanda baca bahasa Inggris.
  2. Ulangi teks dan tambahkan pola kode morse dari setiap karakter teks ke hasilnya.
    • Kode morse berisi spasi setelah setiap karakter dan spasi ganda setelah setiap kata.
    • Jadi ketika kita menemukan spasi dalam teks, yang merupakan pemisah kata, kita perlu menambahkan spasi ganda pada hasilnya.
  3. String yang dihasilkan akan menjadi kode morse yang kita butuhkan.
  4. Terakhir, kembalikan hasilnya.

Cobalah untuk menulis kode dengan Python. Jangan khawatir, bahkan jika Anda tidak dapat menulisnya secara lengkap.

Mari kita periksa kode untuk menyandikan teks bahasa Inggris biasa menjadi kode morse.

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

Anda dapat melihat output kode morse di bawah ini. Anda juga akan melihat kode morse serupa di terminal Anda jika Anda tidak mengubah pesannya.

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

Hore! kami mendapat kode morse. Anda tahu apa yang terjadi setelahnya.

Sebelum masuk ke program decoding, mari kita berhenti sejenak dan berpikir tentang bagaimana menulis kode untuk memecahkan kode itu.

Anda seharusnya berpikir untuk membalik kamus CHARS_TO_MORSE_CODE_MAPPING sebagai salah satu langkah. Melakukannya secara manual sangat sibuk dan perlu diperbarui setiap kali pemetaan asli diubah. Mari kita menulis kode untuk membalikkan kamus.

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

Kami hanya membalikkan pasangan nilai kunci dari kamus yang diberikan dengan kode di atas. Kamus yang dihasilkan akan berisi nilai-nilai kunci baru dan kunci sebagai nilai baru.

Kami memiliki semua bagian untuk memecahkan kode kode morse menjadi teks bahasa Inggris biasa. Tanpa basa-basi lagi, mari kita decode kode morse.

Kode Morse ke Bahasa Inggris

Kita bisa membalik proses encoding kode morse untuk mendapatkan algoritma decoding. Mari kita lihat algoritma untuk memecahkan kode morse menjadi teks bahasa Inggris biasa.

  1. Balikkan kamus CHARS_TO_MORSE_CODE_MAPPING menggunakan fungsi util yang telah kami tulis.
  2. Ulangi kode morse dan lacak karakter kode morse saat ini.
    • Jika kita menemukan spasi, itu berarti kita memiliki karakter kode morse yang lengkap untuk didekode.
      • Jika karakter kode morse saat ini kosong dan kita memiliki dua spasi berurutan, maka tambahkan pemisah kata yang merupakan spasi tunggal dalam teks bahasa Inggris biasa.
      • Jika kondisi di atas salah, maka dapatkan karakter yang didekodekan dari kamus dan tambahkan ke hasilnya. Setel ulang karakter kode morse saat ini.
    • Jika kita tidak menemukan spasi, tambahkan ke karakter morse saat ini.
  3. Jika ada karakter terakhir, tambahkan ke hasil setelah decoding menggunakan kamus.
  4. Kembalikan hasilnya di akhir.

Mari kita periksa kode untuk algoritma di atas.

 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)

Saya telah memberikan kode morse yang dihasilkan dari fungsi encoding. Kita akan mendapatkan output berikut jika kita menjalankan program di atas.

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

Catatan: output dalam alfabet huruf besar bahasa Inggris karena kami telah menggunakan alfabet huruf besar untuk pemetaan dalam kamus.

Kata-kata Terakhir

Kita telah melihat bahwa output dari fungsi decoding dalam huruf besar. Anda dapat meningkatkan program dengan membuat output seperti pada waktu tertentu dengan melacak huruf kecil dan huruf besar dari alfabet bahasa Inggris. Ini tidak terkait dengan kode morse, karena huruf besar dan kecil memiliki pola yang sama. Cobalah, karena lebih menyenangkan untuk membuat kode.

Itu saja untuk tutorial ini. Gunakan program yang telah kami tulis ketika Anda menemukan kode morse lain kali.

Selamat Coding

Anda juga dapat melihat cara membuat kata sandi acak dengan Python.