3 usuarios conectados

Convertir a codificación RLE. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada rle_codificar que tome una cadena de texto como entrada y devuelva la cadena codificada usando RLE. RLE es una forma simple de compresión de datos donde secuencias de caracteres consecutivos idénticos se reemplazan por el carácter y el número de veces que se repite.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. def rle_codificar(texto)::

    • Define una función llamada rle_codificar que toma una cadena de texto (texto) como entrada.
  2. if not texto::

    • Si la cadena de entrada está vacía, devuelve una cadena vacía.
  3. resultado = "":

    • Inicializa una cadena vacía para almacenar el resultado codificado.
  4. contador = 1:

    • Inicializa un contador para la frecuencia del carácter actual.
  5. caracter_anterior = texto[0]:

    • Establece el primer carácter del texto como el caracter_anterior.
  6. for caracter_actual in texto[1:]::

    • Itera a través del resto de los caracteres en el texto (a partir del segundo carácter).
  7. if caracter_actual == caracter_anterior::

    • Si el carácter actual es el mismo que el anterior, incrementa el contador.
  8. 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.
  9. 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).
  10. 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.

.