.
Solución al Ejercicio: Convertir a codificación RLE
📋 Copiar código
def rle_codificar(texto):
"""
Realiza la codificación Run-Length Encoding (RLE) en una cadena de texto.
Args:
texto: La cadena de texto a codificar.
Returns:
La cadena codificada con RLE.
"""
if not texto:
return ""
resultado = ""
contador = 1
caracter_anterior = texto[0]
for caracter_actual in texto[1:]:
if caracter_actual == caracter_anterior:
contador += 1
else:
resultado += caracter_anterior + (str(contador) if contador > 1 else "")
caracter_anterior = caracter_actual
contador = 1
resultado += caracter_anterior + (str(contador) if contador > 1 else "")
return resultado
# Ejemplos de uso
texto1 = "AAAABBBCCDAA"
resultado1 = rle_codificar(texto1)
print(f"'{texto1}' codificado con RLE: '{resultado1}'")
texto2 = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB"
resultado2 = rle_codificar(texto2)
print(f"'{texto2}' codificado con RLE: '{resultado2}'")
texto3 = "ABCDE"
resultado3 = rle_codificar(texto3)
print(f"'{texto3}' codificado con RLE: '{resultado3}'")
texto4 = ""
resultado4 = rle_codificar(texto4)
print(f"'' codificado con RLE: '{resultado4}'")
texto5 = "AAABBBAAABBBAAA"
resultado5 = rle_codificar(texto5)
print(f"'{texto5}' codificado con RLE: '{resultado5}'")
Explicación del Código:
-
def rle_codificar(texto):
:
- Define una función llamada
rle_codificar
que toma una cadena de texto (texto
)
como entrada.
-
if not texto:
:
- Si la cadena de entrada está vacía,
devuelve una cadena vacía.
-
resultado = ""
:
- Inicializa una cadena vacía para
almacenar el resultado codificado.
-
contador = 1
:
- Inicializa un contador para la frecuencia
del carácter actual.
-
caracter_anterior = texto[0]
:
- Establece el primer carácter del texto
como el
caracter_anterior
.
-
for caracter_actual in
texto[1:]:
:
- Itera a través del resto de los
caracteres en el texto (a partir del segundo carácter).
-
if caracter_actual ==
caracter_anterior:
:
- Si el carácter actual es el mismo que el
anterior, incrementa el
contador
.
-
else:
:
- Si el carácter actual es diferente del
anterior:
- Añade el
caracter_anterior
al resultado
.
- Añade el
contador
al
resultado
solo si es mayor que 1.
- Actualiza
caracter_anterior
al caracter_actual
.
- Reinicia el
contador
a
1.
-
resultado += caracter_anterior
+ (str(contador) if contador > 1 else "")
:
- Después del bucle, añade el último
carácter y su contador al
resultado
(la lógica es la misma
que dentro del else
).
-
return resultado
:
- Devuelve la cadena codificada con RLE.
Ejemplos de Uso:
Los ejemplos muestran cómo la función codifica
diferentes cadenas de texto utilizando la codificación Run-Length Encoding. Las
secuencias repetidas de caracteres se comprimen, mientras que los caracteres
únicos permanecen tal cual.
.