Encontrando números capicuas con Python
Un número capicúa es aquel que se lee igual de izquierda a derecha que de derecha a izquierda. Por ejemplo 22, 33, 2882, 5005, 292, 2882, etc.
Dado un intervalo cerrado, por ejemplo [10,3425] ¿cuántos y cuáles capicuas podremos encontrar en dicho intervalo?
Solución:
Para solucionar este problema utilizaremos un algoritmo de fuerza bruta, es decir:
- Probando cada uno de los números contenidos en nuestro intervalo.
- Invirtiendo los dígitos que componen al número
- Comparando el número original con el número obtenido al invertir sus dígitos
Herramientas:
Utilizaremos alguna versión reciente de Python y el Jupyter notebook. Te recomiendo que los descargues con el Anaconda Navigator, que incluye estas y otras herramientas para ciencia de datos y cómputo matemático. El link de descarga desde el sitio oficial es el siguiente:
Manos a la obra:
Ya con nuestro Jupyter Notebook abierto (o el editor de código de tu preferencia) y Python instalado, comencemos utilizando una variable para almacenar los límites superior e inferior de nuestro intervalo de búsqueda:
![](https://miro.medium.com/max/1080/1*ib0m5uqW4VU9Y-LJNEBmfw.png)
También crearemos una variable donde iremos acumulando los resultados favorables obtenidos:
![](https://miro.medium.com/max/1078/1*5pe-5jQzo7jrfhdij7xB-Q.png)
Recorreremos cada uno de los números enteros del intervalo, lo convertiremos a formato string para después descomponerlo en una lista de dígitos separados. Una ves separados los dígitos , invertiremos esa lista de dígitos y los compararemos con la lista de dígitos separados original. En caso de ser iguales, almacenamos ese número encontrado para luego mostrar los resultados
![](https://miro.medium.com/max/1094/1*yI93bSS8BGxmAdZBA6nuYw.png)
Ejecutemos cada una de las celdas (shift+control en el caso de jupyter notebook) puedes cambiar los valores de los límites como gustes.
En este caso obtuve 1444 capicuas en el intervalo que usé (en la imagen solo se muestran algunos)
![](https://miro.medium.com/max/1137/1*TJ6-RvdE8RgrWRpOLqKrxQ.png)
Finalmente te dejo el código para que puedas utilizarlo
Comentarios
Publicar un comentario