Python - Saber si cadena es periódica

Python – Saber si cadena es periódica

Siguiendo con los ejercicios de Python vamos a ver si una cadena se puede rearmar tomando un subgrupo de caracteres de la propia cadena y replicándolos para formar la cadena.

Básicamente veremos si una cadena puede ser periódica para ver si un grupo de caracteres puede rearmar a la propia cadena.

Por ejemplo, la cadena EAEEAE es periódica porque con el subgrupo EAE se puede rearmar. Igualmente la cadena EEEE es periódica porque con el subgrupo E se puede rearmar.

Veamos cómo hacer esto con Python.

Explicación del algoritmo

Python - Saber si cadena es periódica
Python – Saber si cadena es periódica

Vamos a realizar todas las combinaciones de la cadena. Por ejemplo para la cadena EAEAEA sus posibles combinaciones son:

  • E
  • EA
  • EAE
  • EAEA
  • EAEAE
  • EAEAEA

En cada paso comprobamos si al multiplicar esa combinación nos da la cadena original y si la combinación no mide lo mismo que la cadena original.

Si ambas condiciones se cumplen entonces diremos que la cadena es periódica. Por otro lado, si acabamos de combinar y no se cumplió en ninguna combinación entonces la cadena no es periódica.

Cadena periódica con Python

Veamos el código de la función escrita en Python. El método te va a devolver un booleano indicando si la cadena es o no periódica, o sea, si se puede rearmar tomando un subgrupo de la misma:

Comenzamos calculando la longitud de la secuencia, luego hacemos un ciclo for desde el 0 hasta la longitud de la cadena menos 1.

Calculamos la combinación en la línea 4 y la imprimimos para términos de depuración.

Luego obtenemos la longitud de la combinación y estimamos cuántas veces debemos multiplicarla para que sea de la misma longitud que la cadena original.

Multiplicamos la combinación en la línea 10 y comprobamos si la combinación multiplicada es igual a la cadena original pero además también revisamos si la longitud de la combinación no es igual a la de la cadena original.

Poniendo todo junto

A continuación dejo el ejemplo de código junto con unos ejemplos de su uso:

La salida ya la dejé anteriormente en una imagen.

Por aquí te dejo otros ejercicios de Python si quieres seguir aprendiendo sobre este lenguaje.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario