El codi Morse és un mètode per transmetre informació de text com una sèrie de tons d'encesa i apagat, llums o clics que poden ser compresos directament per un oient o observador hàbil sense equip especial. Porta el nom de Samuel F. B. Morse, un inventor del telègraf.
Algoritme
L'algoritme és molt senzill. Cada caràcter de l'idioma anglès es substitueix per una sèrie de 'punts' i 'guions' o de vegades només 'punt' o 'guionet' singulars i viceversa.
Consulteu aquesta Viquipèdia imatge per als detalls.
Xifratge
- En el cas del xifratge, extreim cada caràcter (si no l'espai) d'una paraula a la vegada i el combinem amb el seu codi morse corresponent emmagatzemat en l'estructura de dades que hàgim triat (si estàs codificant en Python, els diccionaris poden resultar per ser molt útil en aquest cas)
- Emmagatzemeu el codi morse en una variable que contindrà la nostra cadena codificada i després afegim un espai a la nostra cadena que contindrà el resultat.
- Mentre codifiquem en codi morse hem d'afegir 1 espai entre cada caràcter i 2 espais consecutius entre cada paraula.
- Si el caràcter és un espai, afegiu un altre espai a la variable que conté el resultat. Repetim aquest procés fins que travessem tota la corda
Desxifrat
- En el cas del desxifrat, comencem afegint un espai al final de la cadena a descodificar (això s'explicarà més endavant).
- Ara seguim extreint caràcters de la cadena fins que no tenim espai.
- Tan bon punt tinguem un espai busquem el caràcter d'anglès corresponent a la seqüència de caràcters extreta (o el nostre codi morse) i l'afegim a una variable que emmagatzemarà el resultat.
- Recordeu que fer un seguiment de l'espai és la part més important d'aquest procés de desxifrat. Tan bon punt tinguem 2 espais consecutius afegirem un altre espai a la nostra variable que conté la cadena descodificada.
- L'últim espai al final de la cadena ens ajudarà a identificar l'última seqüència de caràcters del codi morse (ja que l'espai actua com a verificació per extreure caràcters i començar a descodificar-los).
Implementació:
Python proporciona una estructura de dades anomenada diccionari que emmagatzema informació en forma de parells clau-valor que és molt convenient per implementar un xifrat com ara un codi morse. Podem desar el gràfic de codi morse en un diccionari on (parells clau-valor) => (Caràcters anglesos-Codi Morse) . El text pla (caràcters anglesos) ocupa el lloc de les claus i el text xifrat (codi Morse) forma els valors de les claus corresponents. Es pot accedir als valors de les claus des del diccionari de la mateixa manera que accedim als valors d'una matriu mitjançant el seu índex i viceversa.
Python 3
cridant a la funció js des d'html
# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'emmagatzema la forma traduïda en morse de la cadena anglesa'> 'decipher' ->'emmagatzema la forma traduïda a l'anglès de la cadena morse'> 'citext' ->'emmagatzema codi morse d'un sol caràcter'> 'i' ->'manté el recompte dels espais entre caràcters morse'> 'message' ->'emmagatzema la cadena per codificar o descodificar'> '''> # 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 booleà a cadena
Sortida:
--. . . -.- ... -....- ..-. --- .-. -....- --. . . -.- ... GEEKS-FOR-GEEKS>