logo

Tłumacz alfabetu Morse'a w Pythonie

Alfabet Morse'a to metoda przesyłania informacji tekstowych w postaci serii dźwięków włączania i wyłączania, świateł lub kliknięć, które wprawny słuchacz lub obserwator może bezpośrednio zrozumieć bez specjalnego sprzętu. Został nazwany na cześć Samuela FB Morse'a, wynalazcy telegrafu.

Algorytm

Algorytm jest bardzo prosty. Każdy znak w języku angielskim jest zastępowany serią „kropek” i „kresek”, a czasem po prostu pojedynczą „kropką” lub „kreską” i odwrotnie.
Proszę zapoznać się z tą Wikipedią obraz dla szczegółów.



Szyfrowanie

  1. W przypadku szyfrowania wyodrębniamy każdy znak (jeśli nie spację) ze słowa pojedynczo i dopasowujemy go do odpowiedniego alfabetu Morse'a zapisanego w dowolnej wybranej przez nas strukturze danych (jeśli kodujesz w Pythonie, słowniki mogą się okazać będzie bardzo przydatne w tym przypadku)
  2. Przechowuj kod Morse'a w zmiennej, która będzie zawierać zakodowany przez nas ciąg, a następnie dodajemy spację do naszego ciągu, który będzie zawierał wynik.
  3. Podczas kodowania alfabetem Morse'a musimy dodać 1 spację między każdym znakiem i 2 kolejne spacje między każdym słowem.
  4. Jeśli znak jest spacją, dodaj kolejną spację do zmiennej zawierającej wynik. Powtarzamy ten proces, aż przejdziemy przez cały ciąg

Odszyfrowanie

  1. W przypadku deszyfrowania zaczynamy od dodania spacji na końcu ciągu znaków, który ma zostać zdekodowany (zostanie to wyjaśnione później).
  2. Teraz wyodrębniamy znaki z łańcucha, aż nie będzie już miejsca.
  3. Gdy tylko pojawi się spacja, wyszukujemy odpowiedni znak języka angielskiego w wyodrębnionej sekwencji znaków (lub naszym kodzie Morse'a) i dodajemy go do zmiennej, która przechowuje wynik.
  4. Pamiętaj, że śledzenie miejsca jest najważniejszą częścią procesu deszyfrowania. Gdy tylko otrzymamy 2 kolejne spacje, do naszej zmiennej zawierającej zdekodowany ciąg znaków dodamy kolejną spację.
  5. Ostatnia spacja na końcu łańcucha pomoże nam zidentyfikować ostatnią sekwencję znaków alfabetu Morse'a (ponieważ spacja służy jako kontrola wyodrębnienia znaków i rozpoczęcia ich dekodowania).

Realizacja:

Python udostępnia strukturę danych zwaną słownikiem, która przechowuje informacje w postaci par klucz-wartość, co jest bardzo wygodne przy implementowaniu szyfru, takiego jak alfabet Morse'a. Możemy zapisać wykres alfabetu Morse'a w słowniku, gdzie (pary klucz-wartość) => (znaki angielskie-kod Morse'a) . Tekst jawny (znaki angielskie) zastępuje klucze, a tekst zaszyfrowany (kod Morse'a) tworzy wartości odpowiednich kluczy. Dostęp do wartości kluczy można uzyskać ze słownika w taki sam sposób, w jaki uzyskujemy dostęp do wartości tablicy poprzez ich indeks i odwrotnie.

Python3




różnica między gigabajtem a megabajtem





# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'przechowuje przetłumaczoną Morse'a formę angielskiego ciągu '> 'decipher' ->'przechowuje przetłumaczoną na język angielski formę ciągu Morse'a'> 'citext' ->'przechowuje kod Morse'a pojedynczego znaku'> 'i' ->'zapisuje odstępy pomiędzy znakami Morse'a'> 'message' ->'przechowuje ciąg znaków do zakodowania lub zdekodowania'> '''> # Dictionary representing the morse code chart> MORSE_CODE_DICT>=> {>'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 encrypt the string> # according to the morse code chart> def> encrypt(message):> >cipher>=> ''> >for> letter>in> message:> >if> letter !>=> ' '>:> ># Looks up the dictionary and adds the> ># corresponding morse code> ># along with a space to separate> ># morse codes for different characters> >cipher>+>=> MORSE_CODE_DICT[letter]>+> ' '> >else>:> ># 1 space indicates different characters> ># and 2 indicates different words> >cipher>+>=> ' '> >return> cipher> # Function to decrypt the string> # from morse to english> def> decrypt(message):> ># extra space added at the end to access the> ># last morse code> >message>+>=> ' '> >decipher>=> ''> >citext>=> ''> >for> letter>in> message:> ># checks for space> >if> (letter !>=> ' '>):> ># counter to keep track of space> >i>=> 0> ># storing morse code of a single character> >citext>+>=> letter> ># in case of space> >else>:> ># if i = 1 that indicates a new character> >i>+>=> 1> ># if i = 2 that indicates a new word> >if> i>=>=> 2> :> ># adding space to separate words> >decipher>+>=> ' '> >else>:> ># accessing the keys using their values (reverse of encryption)> >decipher>+>=> list>(MORSE_CODE_DICT.keys())[>list>(MORSE_CODE_DICT> >.values()).index(citext)]> >citext>=> ''> >return> decipher> # Hard-coded driver function to run the program> def> main():> >message>=> 'GEEKS-FOR-GEEKS'> >result>=> encrypt(message.upper())> >print> (result)> >message>=> '--. . . -.- ... -....- ..-. --- .-. -....- --. . . -.- ... '> >result>=> decrypt(message)> >print> (result)> # Executes the main function> if> __name__>=>=> '__main__'>:> >main()>

>

zablokowane kontakty

>

Wyjście:

--. . . -.- ... -....- ..-. --- .-. -....- --. . . -.- ... GEEKS-FOR-GEEKS>