3. Codi secret [4]

La informació referent a la fórmula d’un nou producte químic està encriptada en dos strings. Per desencriptar la informació haurem de seguir els següents passos:

  1. Si els dos strings són de longitud senar els dos, agafarem la primera meitat del primer string (la part esquerra del caràcter central) i la segona meitat del segon (la part dreta del caràcter central) i els sumarem. Llavors canviarem tots els símbols '#' per 'a' i tots els '&' per 'e'. Finalment, eliminarem el primer i el darrer caràcter de l’string resultant.

  2. Un string té longitud parell i l’altre té longitud senar, eliminarem el darrer caràcter de l’string de longitud parell i aplicarem l’apartat anterior.

  3. Si els dos strings tenen longitud parell, considerarem els caràcters que tenen un índex parell (0, 2, …) del primer string, els caràcters que tenen un índex senar del segon string i els unirem.

En qualsevol dels tres casos, l’string resultant ens dona la informació que buscàvem.

Per resoldre l’exercici, farem dues funcions diferents. En primer lloc, implementa una funció anomenada senar_senar tal que faci la desencriptació suposant que els dos strings tenen longitud senar segons el que s’ha descrit en el punt 1.

Desa la funció al fitxer codi.py. La funció ha de passar el següent doctest:

>>> s=senar_senar('123', 'abc')
>>> s
''
>>> s= senar_senar('12345', 'abcde')
>>> s
'2d'
>>> s= senar_senar('123456789', 'abcde')
>>> s
'234d'
>>> s= senar_senar('1##456789', 'abc&4')
>>> s
'aa4e'

Nota

Pots descarregar el fitxer amb tests test-codi1.txt.

Utilitzant la funció senar_senar, implementa una funció anomenada informacio que desencripti en qualsevol cas seguint els punts anteriors.

Desa la funció al fitxer codi.py. La funció ha de passar el següent doctest:

>>> informacio('larlado', 'blmalam')
'arla'
>>> informacio('0v&shiefsghi8', 'tc#r#iic#r#it')
'veshicarai'
>>> informacio('arados', 'blabla2')
'rla'
>>> informacio('arados2', 'blabla')
'rab'
>>> informacio('012345678', '4b$$$labl&&a4')
'123bleea'
>>> informacio('12345678', 'abcdef')
'1357bdf'

Nota

Pots descarregar el fitxer amb tests test-codi.txt. Tens una solució a codi.py.