logo

Prevajalnik Morsejeve kode v Pythonu

Morsejeva abeceda je metoda prenosa besedilnih informacij v obliki niza vklopljenih in izklopljenih tonov, luči ali klikov, ki jih lahko spreten poslušalec ali opazovalec neposredno razume brez posebne opreme. Imenuje se po Samuelu F. B. Morseju, izumitelju telegrafa.

Algoritem

Algoritem je zelo preprost. Vsak znak v angleškem jeziku je nadomeščen z nizom 'pik' in 'pomišljajev' ali včasih samo z ednino 'pika' ali 'pomišljaj' in obratno.
Oglejte si to Wikipedijo slika za podrobnosti.



Šifriranje

  1. V primeru šifriranja izvlečemo vsak znak (če ne presledek) iz besede enega za drugim in ga povežemo z ustrezno morsejevo abecedo, shranjeno v kateri koli podatkovni strukturi, ki smo jo izbrali (če kodirate v pythonu, se lahko izkažejo slovarji v tem primeru zelo koristen)
  2. Morsejevo abecedo shranimo v spremenljivko, ki bo vsebovala naš kodirani niz, nato pa nizu, ki bo vseboval rezultat, dodamo presledek.
  3. Med kodiranjem v morsejevi abecedi moramo med vsak znak dodati 1 presledek in med vsako besedo 2 zaporedna presledka.
  4. Če je znak presledek, dodajte še en presledek spremenljivki, ki vsebuje rezultat. Ta postopek ponavljamo, dokler ne prečkamo celotne vrvice

Dešifriranje

  1. V primeru dešifriranja začnemo z dodajanjem presledka na koncu niza, ki ga želimo dekodirati (to bo razloženo kasneje).
  2. Zdaj še naprej ekstrahiramo znake iz niza, dokler ne dobimo nobenega prostora.
  3. Takoj, ko dobimo presledek, poiščemo ustrezni angleški jezikovni znak v ekstrahiranem zaporedju znakov (ali naši morsejevi abecedi) in ga dodamo spremenljivki, ki bo shranila rezultat.
  4. Ne pozabite, da je sledenje prostoru najpomembnejši del tega postopka dešifriranja. Takoj ko dobimo 2 zaporedna presledka, bomo naši spremenljivki, ki vsebuje dekodirani niz, dodali še en presledek.
  5. Zadnji presledek na koncu niza nam bo pomagal prepoznati zadnje zaporedje znakov morsejeve abecede (ker presledek deluje kot preverjanje za ekstrahiranje znakov in začetek njihovega dekodiranja).

Izvedba:

Python ponuja podatkovno strukturo, imenovano slovar, ki shranjuje informacije v obliki parov ključ-vrednost, kar je zelo priročno za implementacijo šifre, kot je morsejeva abeceda. Tabelo morsejeve kode lahko shranimo v slovar, kjer (pari ključ-vrednost) => (angleški znaki-Morsejeva abeceda) . Navadno besedilo (angleški znaki) prevzame mesto ključev, šifrirano besedilo (Morsejeva abeceda) pa tvori vrednosti ustreznih ključev. Do vrednosti ključev lahko dostopamo iz slovarja na enak način kot do vrednosti matrike preko njihovega indeksa in obratno.

Python3




primarni ključ sestavljeni ključ





# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'shranjuje morsejevo prevedeno obliko angleškega niza'> 'decipher' ->'shranjuje angleško prevedeno obliko morsejevega niza'> 'citext' ->'shranjuje morsejevo kodo enega znaka'> 'i' ->'šteje presledke med morsejevimi znaki'> 'message' ->'shrani niz, ki ga je treba kodirati ali dekodirati'> '''> # 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()>

runas v lupini powershell
>

>

Izhod:

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