logo

Traduttore di codice Morse in Python

Il codice Morse è un metodo per trasmettere informazioni di testo come una serie di toni, luci o clic on-off che possono essere compresi direttamente da un ascoltatore o osservatore esperto senza apparecchiature speciali. Prende il nome da Samuel F. B. Morse, inventore del telegrafo.

Algoritmo

L'algoritmo è molto semplice. Ogni carattere nella lingua inglese è sostituito da una serie di “punti” e “trattini” o talvolta solo dal singolare “punto” o “trattino” e viceversa.
Si prega di fare riferimento a questa Wikipedia Immagine per dettagli.



Crittografia

  1. Nel caso della crittografia, estraiamo ogni carattere (se non lo spazio) da una parola uno alla volta e lo abbiniamo al codice morse corrispondente memorizzato in qualunque struttura dati abbiamo scelto (se stai codificando in Python, i dizionari possono risultare essere molto utile in questo caso)
  2. Memorizziamo il codice morse in una variabile che conterrà la nostra stringa codificata e poi aggiungiamo uno spazio alla nostra stringa che conterrà il risultato.
  3. Durante la codifica in codice morse dobbiamo aggiungere 1 spazio tra ogni carattere e 2 spazi consecutivi tra ogni parola.
  4. Se il carattere è uno spazio, aggiungi un altro spazio alla variabile contenente il risultato. Ripetiamo questo processo finché non attraversiamo l'intera stringa

Decifrazione

  1. Nel caso della decrittazione, iniziamo aggiungendo uno spazio alla fine della stringa da decodificare (questo verrà spiegato più avanti).
  2. Ora continuiamo a estrarre i caratteri dalla stringa finché non otteniamo più spazio.
  3. Non appena otteniamo uno spazio cerchiamo il carattere della lingua inglese corrispondente alla sequenza di caratteri estratta (o al nostro codice morse) e lo aggiungiamo a una variabile che memorizzerà il risultato.
  4. Ricorda che tenere traccia dello spazio è la parte più importante di questo processo di decrittazione. Non appena avremo 2 spazi consecutivi aggiungeremo un altro spazio alla nostra variabile contenente la stringa decodificata.
  5. L'ultimo spazio alla fine della stringa ci aiuterà a identificare l'ultima sequenza di caratteri del codice morse (poiché lo spazio funge da controllo per estrarre i caratteri e iniziare a decodificarli).

Implementazione:

Python fornisce una struttura dati chiamata dizionario che memorizza le informazioni sotto forma di coppie chiave-valore, molto comoda per implementare una cifratura come un codice morse. Possiamo salvare la tabella del codice morse in un dizionario dove (coppie chiave-valore) => (Caratteri inglesi-Codice Morse) . Il testo in chiaro (caratteri inglesi) prende il posto delle chiavi e il testo cifrato (codice Morse) forma i valori delle chiavi corrispondenti. È possibile accedere ai valori delle chiavi dal dizionario nello stesso modo in cui accediamo ai valori di un array tramite il loro indice e viceversa.

Python3




leggere i file json





# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'memorizza la forma tradotta in morse della stringa inglese'> 'decipher' ->'memorizza la forma tradotta in inglese della stringa morse'> 'citext' ->'memorizza il codice morse di un singolo carattere'> 'i' ->'tiene il conto degli spazi tra i caratteri morse'> 'message' ->'memorizza la stringa da codificare o decodificare'> '''> # 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()>

>

>

macchina virtuale Java

Produzione:

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