Iteradors de Morse¶
El codi Morse és un mètode per a transmetre informació que utilitza seqüències d’elements curts (punts) i llargs (ratlles) separats per espais per representar les lletres, nombres, puntuació i altres caràcters especials d’un missatge. Volem traduir un missatge a Morse i també poder-los descodificar.
A tal efecte, seguiu els passos indicats:
En un mòdul anomenat
iter_morse.py
, dissenyeu la funciódicc_morse(nomf)
que donat el nom d’un fitxer que conté les equivalències entre caràcters i la seva codificació en Morse, amb el format descrit més avall, retorni dos diccionaris:El primer diccionari,
d1
, farà correspondre a cada caràcter el codi Morse equivalent (una cadena de punts i ratlles). Així, per exemple,d1["m"]
valdrà"--"
id1["x"]
valdrà"-..-"
.El segon diccionari,
d2
, contindrà la informació contrària; per exemple,d2["--"]
valdrà"m"
i d2[«-..-»] valdrà"x"
. Els valors ded2
no poden ser lletres majúscules, només minúscules.
El fitxer a partir del qual es formen els dos diccionaris retornats ha de contenir a cada línia un caràcter, seguit de
"|"
i de la sequència de punts i ratlles equivalents en Morse. Vegeu el fitxer Media:internacional.morse com a exemple.Escriviu el generador
iter_codif(s, dicc)
de Python que produeixi la seqüència de codis Morse dels caràcters del strings
, essent dicc un diccionari que indica com codificar cadascun dels caràcters des
(com és ara el primer dels dos diccionaris retornat per la funció anterior,d1
). Els caràcters des
que no tinguin equivalència en el diccionari produiran"?"
com a element de la seqüència.Dissenyeu la funció
codifica(m, dicc)
que donat un stringm
i un diccionari de codificació Morsedicc
, retorni un altre string que serà l’equivalència en Morse del missatgem
. Aquesta funció ha d’utilitzar obligatòriament l’iteradoriter_codif
. El string retornat serà tal que:Els codis corresponents a lletres d’una mateixa paraula han d’anar separats per un sol espai en blanc.
Les paraules estaran separades per tres espais en blanc.
La darrera paraula serà el de final de missatge, anomenat AR (
".-.-."
).
S’espera, per exemple, que amb el diccionari Morse habitual
codifica('SOS', d)
retorni el següent:<nowiki>"... --- ... .-.-."</nowiki>
Escriviu el generador
iter_descodif(m, dicc)
que rebi com a paràmetres un stringm
corresponent a una paraula codificada en Morse (és a dir, subsequëncies de"."
i"-"
, corresponents a la codificació d’un caràter, separats per espai en blanc; també hi pot aparèixer el caràcter"?"
) i un diccionaridicc
que indica com descodificar Morse (com el segon dels diccionaris retornat per la funciódicc_morse
,d2
). Aquest generador ha de produir la seqüència de caràcters corresponent a la descodificació del missatgem
segons el diccionaridicc
. Els codis no coneguts generaran"??"
com a element de la seqüència.Dissenyeu la funció
descodifica(m, dicc)
que donat un stringm
, codificat en Morse com ho fariacodifica
, i un diccionaridicc
de descodificació de Morse, retorni un altre string que sigui el missatgem
descodificat. Aquesta funció ha d’utilitzar obligatòriament l’iteradoriter_descodif
. El string retornat ha de ser tal que:Totes les lletres descodificades estiguin en minúscules.
No ha de contenir la traducció del codi de final de missatge.
S’espera, per exemple, que amb el diccionari de descodificació Morse habitual,
descodifica("... --- ... .-.-.")
retorni
"sos"
.