El problema de los números felices

1. El problema de los números felices

Según la Wikipedia, un número feliz se define por el siguiente proceso. Se comienza reemplazando el número por la suma del cuadrado de sus cifras y se repite el proceso hasta que se obtiene el número 1 o se entra en un ciclo que no contiene al 1. Aquellos números para los que el proceso termina en 1 se llaman números felices y los que entran en un ciclo sin 1 se llaman números desgraciados.

Por ejemplo, 7 es un número feliz porque

Pero 17 es un número desgraciado porque

que forma un bucle al repetirse el 89.

El objetivo del ejercicio es definir una función que calcule todos los números felices hasta un límite dado.

2. Ejercicio de los números felices en Haskell

3. Ejercicio de los números felices en Maxima

4. Comentarios

He actualizado el libro Introducción al Cálculo simbólico con Maxima y le he añadido el problema de los números felices.

Una tarea pendiente es estudiar el problema de los números felices en un sistema de razonamiento automático (ACL2, Isabelle, PVS). Para ello, hay que demostrar la terminación de la función caminoALaFelicidad. Pienso que en ninguno de los tres sistemas, la prueba de la terminación es automática.

Referencias

Este ejercicio se basa en el artículo Happy Numbers publicado el 23 de julio de 2010 en ProgrammingPraxis y su respuesta en Bonsai.