Hi ha moltes maneres d’intentar amagar un text. Una d’elles és el xifratge de Vigenère: Sigui s una paraula amb lletres minúscules (les 26 de l’alfabet anglès), i sigui t el text que volem xifrar, també compost per lletres minúscules. Sigui c la concatenació d’infinites còpies de la paraula s. Definim el valor d’una lletra ℓ, v(ℓ), com la distància d’ℓ fins a ‘a’. És a dir, v(‘a’) = 0, v(‘b’) = 1, …, v(‘z’) = 25. Cada t[i] s’ha de convertir en la lletra que es troba v(c[i]) posicions a la dreta en l’alfabet, si cal “donant la volta”.
Per exemple, podem tenir s = “hola” i t = “patata”. Llavors c = “holaholahola…”. Com que c[0] =‘h’ i v(‘h’) = 7, t[0] =‘p’ s’ha de convertir en ‘w’ (la lletra que està 7 posicions a la dreta de ‘p’). Similarment, c[1] =‘o’ i v(‘o’) = 14, així que t[1] =‘a’ es converteix en ‘o’. Per a la tercera lletra, tenim c[2] =‘l’ i v(‘l’) = 11, així que t[2] =‘t’ es converteix en ‘e’ (fent 11 passes a la dreta començant en ‘t’, ens passem de la ‘z’, així que seguim des de l’‘a’).
Feu un programa que implementi el Xifratge de Vigenère.
Entrada
L’entrada consisteix en diversos casos, cadascun en dues línies, les quals contenen s i t, respectivament. Ni s ni t són paraules buides. A més de lletres minúscules, t pot contenir “barres baixes” (‘_’).
Sortida
Escriviu una línia per a cada cas, amb el xifratge de t tal i com s’ha explicat anteriorment, substituïnt cada ‘_’ per un espai.
Input
hola patata hola setze_jutges_dun_jutjat_mengen_fetge_dun_penjat a nomes_posa_espais b cap_a_la_dreta z cap_a_lesquerra
Output
woeaao zsezl uuaups rfn xftqoe tsyglb flhre rfn dpnqoe nomes posa espais dbq b mb esfub bzo z kdrptdqqz