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
- 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)
- 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.
- Podczas kodowania alfabetem Morse'a musimy dodać 1 spację między każdym znakiem i 2 kolejne spacje między każdym słowem.
- Jeśli znak jest spacją, dodaj kolejną spację do zmiennej zawierającej wynik. Powtarzamy ten proces, aż przejdziemy przez cały ciąg
Odszyfrowanie
- 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).
- Teraz wyodrębniamy znaki z łańcucha, aż nie będzie już miejsca.
- 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.
- 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ę.
- 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>