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>