Morsecode is een methode voor het verzenden van tekstinformatie als een reeks aan-uittonen, lichten of klikken die zonder speciale apparatuur direct kunnen worden begrepen door een ervaren luisteraar of waarnemer. Het is genoemd naar Samuel F. B. Morse, een uitvinder van de telegraaf.
Algoritme
Het algoritme is heel eenvoudig. Elk teken in de Engelse taal wordt vervangen door een reeks ‘punten’ en ‘streepjes’ of soms gewoon enkelvoudige ‘punt’ of ‘streepje’ en vice versa.
Raadpleeg deze Wikipedia afbeelding voor details.
Encryptie
- In het geval van encryptie extraheren we elk teken (als het geen spatie is) één voor één uit een woord en matchen het met de corresponderende morsecode die is opgeslagen in de datastructuur die we hebben gekozen (als je in Python codeert, kunnen woordenboeken blijken in dit geval erg handig)
- Sla de morsecode op in een variabele die onze gecodeerde string zal bevatten en vervolgens voegen we een spatie toe aan onze string die het resultaat zal bevatten.
- Bij het coderen in morsecode moeten we 1 spatie tussen elk teken en 2 opeenvolgende spaties tussen elk woord toevoegen.
- Als het teken een spatie is, voeg dan nog een spatie toe aan de variabele die het resultaat bevat. We herhalen dit proces totdat we de hele reeks hebben doorlopen
Decryptie
- In het geval van decodering beginnen we met het toevoegen van een spatie aan het einde van de te decoderen string (dit wordt later uitgelegd).
- Nu blijven we tekens uit de string extraheren totdat we geen spatie meer krijgen.
- Zodra we een spatie krijgen, zoeken we het corresponderende Engelstalige teken op voor de geëxtraheerde reeks tekens (of onze morsecode) en voegen we dit toe aan een variabele die het resultaat opslaat.
- Onthoud dat het bijhouden van de ruimte het belangrijkste onderdeel is van dit decoderingsproces. Zodra we 2 opeenvolgende spaties hebben, voegen we nog een spatie toe aan onze variabele die de gedecodeerde string bevat.
- De laatste spatie aan het einde van de string helpt ons de laatste reeks morsecodetekens te identificeren (aangezien de spatie fungeert als een controle voor het extraheren van tekens en het decoderen ervan).
Implementatie:
Python biedt een datastructuur, een woordenboek genaamd, waarin informatie wordt opgeslagen in de vorm van sleutel-waardeparen, wat erg handig is voor het implementeren van een cijfer zoals een morsecode. We kunnen de morsecodekaart opslaan in een woordenboek waar (sleutel-waardeparen) => (Engelse karakters-morsecode) . De leesbare tekst (Engelse karakters) neemt de plaats in van de sleutels en de cijfertekst (morsecode) vormt de waarden van de overeenkomstige sleutels. De waarden van sleutels zijn toegankelijk vanuit het woordenboek op dezelfde manier waarop we toegang krijgen tot de waarden van een array via hun index en omgekeerd.
Python3
c-code abs
# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'bewaart de in morse vertaalde vorm van de Engelse string'> 'decipher' ->'bewaart de Engels vertaalde vorm van de morsereeks'> 'citext' ->'slaat morsecode van één teken op'> 'i' ->'houdt de spaties bij tussen morsetekens'> 'message' ->'bewaart de string die moet worden gecodeerd of gedecodeerd'> '''> # 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()> |
>
operators in Python-programmering
>
Uitgang:
--. . . -.- ... -....- ..-. --- .-. -....- --. . . -.- ... GEEKS-FOR-GEEKS>