Morzes kods ir teksta informācijas pārsūtīšanas metode ieslēgšanas-izslēgšanas signālu, gaismas vai klikšķu virknē, ko prasmīgs klausītājs vai novērotājs var tieši saprast bez īpaša aprīkojuma. Tas nosaukts telegrāfa izgudrotāja Samuela F. B. Morsa vārdā.
Algoritms
Algoritms ir ļoti vienkāršs. Katru rakstzīmi angļu valodā aizstāj ar virkni 'punktu' un 'domuzīmju' vai dažreiz tikai ar vienskaitļa 'punktu' vai 'domuzīmi' un otrādi.
Lūdzu, skatiet šo Wikipedia attēlu sīkākai informācijai.
Šifrēšana
- Šifrēšanas gadījumā mēs izņemam katru rakstzīmi (ja ne atstarpi) no vārda pa vienam un saskaņojam to ar atbilstošo morzes kodu, kas saglabāts jebkurā datu struktūrā, kuru esam izvēlējušies (ja kodējat python, vārdnīcas var izrādīties lai šajā gadījumā būtu ļoti noderīgi)
- Saglabājiet morzes kodu mainīgajā, kurā būs mūsu kodētā virkne, un pēc tam virknei pievienojam atstarpi, kurā būs rezultāts.
- Kodējot morzes kodā, mums jāpievieno 1 atstarpe starp katru rakstzīmi un 2 secīgas atstarpes starp katru vārdu.
- Ja rakstzīme ir atstarpe, pievienojiet citu atstarpi mainīgajam, kas satur rezultātu. Mēs atkārtojam šo procesu, līdz šķērsojam visu virkni
Atšifrēšana
- Atšifrēšanas gadījumā mēs sākam, pievienojot atstarpi atšifrējamās virknes beigās (tas tiks paskaidrots vēlāk).
- Tagad mēs turpinām izvilkt rakstzīmes no virknes, līdz netiek iegūta vieta.
- Tiklīdz mēs iegūstam atstarpi, mēs atrodam atbilstošo angļu valodas rakstzīmi iegūtajai rakstzīmju secībai (vai mūsu morzes kodam) un pievienojam to mainīgajam, kas saglabās rezultātu.
- Atcerieties, ka vietas izsekošana ir šī atšifrēšanas procesa vissvarīgākā daļa. Tiklīdz mēs iegūstam 2 secīgas atstarpes, mēs pievienosim vēl vienu atstarpi mūsu mainīgajam, kurā ir dekodēta virkne.
- Pēdējā atstarpe virknes beigās palīdzēs mums noteikt pēdējo morzes koda rakstzīmju secību (jo atstarpe darbojas kā pārbaude rakstzīmju izvilkšanai un to atšifrēšanas sākšanai).
Īstenošana:
Python nodrošina datu struktūru, ko sauc par vārdnīcu, kurā tiek glabāta informācija atslēgu un vērtību pāru veidā, kas ir ļoti ērti, lai ieviestu šifru, piemēram, morzes kodu. Morzes koda diagrammu varam saglabāt vārdnīcā, kur (atslēgas-vērtību pāri) => (angļu rakstzīmes-morzes kods) . Vienkāršais teksts (angļu rakstzīmes) aizstāj taustiņus, un šifrētais teksts (Morzes kods) veido atbilstošo taustiņu vērtības. Atslēgu vērtībām var piekļūt no vārdnīcas tādā pašā veidā, kā mēs piekļūstam masīva vērtībām, izmantojot to indeksu, un otrādi.
Python3
savienojuma java virkne
java virknes vērtība
# Python program to implement Morse Code Translator> '''> VARIABLE KEY> 'cipher' ->'saglabā angļu valodas virknes morzes tulkoto formu'> 'decipher' ->'saglabā angļu valodā tulkoto morzes virknes formu'> 'citext' ->'saglabā vienas rakstzīmes morzes kodu'> 'i' ->'uztur atstarpes starp morzes rakstzīmēm'> 'message' ->'saglabā kodējamo vai atkodējamo virkni'> '''> # 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()> |
>
>
Izvade:
--. . . -.- ... -....- ..-. --- .-. -....- --. . . -.- ... GEEKS-FOR-GEEKS>