''.join(random.choice("abcde") for x in range(20))
De manera que tengamos una cadena de largo 20 y con un alfabeto A = {a, b, c, d, e}
Esta es la cadena que vamos a utilizar 'bbbeadbaaddadabceacb'
Encontramos los valores que podemos sustituir en la primera iteración
En la primera iteración buscamos caracteres que se repitan pero en bares diferentes por lo que primero voy a comprimir con la variable X a la repetición ea.
- bbbeadbaaddadabceacb
- X = ea
Luego en la segunda iteración encontramos caracteres repetidos como da.
- bbbXdbaaddadabcXcb
- Y = da
- bbbXdbaadYYbcXcb
- Z = bbb
- ZXdbaadYYbcXcb
- W= aa
- ZXdbWdYYbcXcb
- Q=YY
- ZXdbWdQbcXcb
- X = ea
- Y = da
- Z = bbb
- W= aa
- Q=YY
Ahora para decomprimirlo, como ya tenemos el diccionario, en la primera iteración sustituimos la Q ya que esta contiene referencias al mismo diccionario.
- ZXdbWdQbcXcb
- ZXdbWdYYbcXcb
Luego sustituimos la W de la cadena que tenemos
- ZXdbaadYYbcXcb
Ahora, sustituimos la letra Z
- ZXdbaadYYbcXcb
- bbbXdbaadYYbcXcb
Luego, en la siguiente iteración, sustituimos las Y
- bbbXdbaadYYbcXcb
- bbbXdbaaddadabcXcb
Para después en la siguiente iteración y última con la variable X
- bbbXdbaaddadabcXcb
- bbbeadbaaddadabceacb
Entonces como resumen tenemos lo siguiente.
- Cadena = bbbeadbaaddadabceacb
- largo = 20
- Cadena comprimida = ZXdbWdQbcXcb
- largo = 12
4 extras en tarea 5.
ResponderEliminar