logo

Morsekodöversättare i Python

Morsekod är en metod för att överföra textinformation som en serie på-/av-toner, ljus eller klick som direkt kan förstås av en skicklig lyssnare eller observatör utan speciell utrustning. Den är uppkallad efter Samuel F. B. Morse, en uppfinnare av telegrafen.

Algoritm

Algoritmen är väldigt enkel. Varje tecken på det engelska språket ersätts av en serie 'prickar' och 'streck' eller ibland bara singularis 'prick' eller 'streck' och vice versa.
Vänligen hänvisa till denna Wikipedia bild för detaljer.



Kryptering

  1. När det gäller kryptering extraherar vi varje tecken (om inte mellanslag) från ett ord ett i taget och matchar det med dess motsvarande morsekod lagrad i vilken datastruktur vi än har valt (om du kodar i python kan ordböcker visa sig för att vara mycket användbar i det här fallet)
  2. Lagra morsekoden i en variabel som kommer att innehålla vår kodade sträng och sedan lägger vi till ett mellanslag i vår sträng som kommer att innehålla resultatet.
  3. När vi kodar i morsekod måste vi lägga till 1 mellanslag mellan varje tecken och 2 på varandra följande mellanslag mellan varje ord.
  4. Om tecknet är ett mellanslag, lägg till ytterligare ett mellanslag till variabeln som innehåller resultatet. Vi upprepar denna process tills vi korsar hela strängen

Dekryptering

  1. Vid dekryptering börjar vi med att lägga till ett mellanslag i slutet av strängen som ska avkodas (detta kommer att förklaras senare).
  2. Nu fortsätter vi att extrahera tecken från strängen tills vi inte får något utrymme.
  3. Så fort vi får ett mellanslag slår vi upp motsvarande engelska tecken till den extraherade teckensekvensen (eller vår morsekod) och lägger till den i en variabel som kommer att lagra resultatet.
  4. Kom ihåg att hålla reda på utrymmet är den viktigaste delen av denna dekrypteringsprocess. Så snart vi får 2 på varandra följande mellanslag kommer vi att lägga till ytterligare ett mellanslag till vår variabel som innehåller den avkodade strängen.
  5. Det sista utrymmet i slutet av strängen hjälper oss att identifiera den sista sekvensen av morsekodtecken (eftersom mellanslag fungerar som en kontroll för att extrahera tecken och börja avkoda dem).

Genomförande:

Python tillhandahåller en datastruktur som kallas en ordbok som lagrar information i form av nyckel-värdepar vilket är mycket praktiskt för att implementera ett chiffer som en morsekod. Vi kan spara morsekoddiagrammet i en ordbok där (nyckel-värdepar) => (engelska tecken-morsekod) . Klartexten (engelska tecken) ersätter nycklar och chiffertexten (morsekod) bildar värdena för motsvarande nycklar. Värdena för nycklar kan nås från ordboken på samma sätt som vi kommer åt värdena för en array genom deras index och vice versa.

Python3




css ändrar bildstorlek





# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'lagrar den morseöversatta formen av den engelska strängen'> 'decipher' ->'lagrar den engelska översatta formen av morsesträngen'> 'citext' ->'lagrar morsekod av ett enda tecken'> 'i' ->'behåller räkning av blanksteg mellan morse-tecken'> 'message' ->'lagrar strängen som ska kodas eller avkodas'> '''> # 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()>

java jämför strängar
>

>

Produktion:

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