Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Nuevo reto de la programación lúdica: Números palindrómicos

En este reto de la programación lúdica hay que poner las habilidades para hacer un programa sencillo, sí, pero que corra mucho más rápido que el de otros competidores.

Ya en unocero hemos hablado alguna vez de palíndromas, que son frases que se leen al derecho y al revés igual, por ejemplo, “Anita lava la tina”, “Somos o no somos” (creación mía) o muchos otros como los estupendos palíndromas de Merlina Acevedo, del cual ponemos un solo ejemplo: “¿Anita lava lo ajeno como coneja o lava la tina?”. De hecho, hay una manera de definir un palíndroma usando un palíndroma: “sé verlas al revés”, lo cual sin duda es muy ingenioso.

Pero así como hay palíndromas en los idiomas humanos, también lo hay en las matemáticas. Existen los llamados palíndromas numéricos, también llamados “números capicúa”. Hay una clásica conjetura de origen desconocido), que dice lo siguiente: “Se toma un número entero positivo cualquiera. El número se escribe entonces en orden inverso; los dos números se suman. El proceso se repite con el número suma, obteniéndose entonces una segunda suma, y se prosigue de igual forma hasta lograr un capicúa. La conjetura afirma que tras número finito de adiciones terminará por obtenerse un capicúa”.

Un nuevo reto de la programación lúdica

Por ejemplo, consideremos el número 68:

68 + 86 = 154
154 + 451 = 605
606 + 506 = 1111

Se sabe que si el número es de dos dígitos y la suma de sus cifras suman menos de 100, en el primer paso se obtendrá un palíndromo o capicúa. Por ejemplo:

34 + 43 = 77

La conjetura parece un divertimento tan simpático como el de los números maravillosos. En 1967, dice Martin Gardner, en su libro “Circo Matemático”, Charles W. Trigg descubrió que entre los números menores a 10 mil había nada menos que 249 números que no generaban palíndromos después de ejecutar 100 veces el proceso. El menor número en esas condiciones es el 196. En 1975, Harry J. Saal, realizó 237,310 iteraciones a partir de este número sin presentarse nunca sumas palindrómicas. Trigg opina de hecho que la conjetura es falsa, aunque nadie ha podido demostrarla. Se conoce también que todos los enteros menores de 10 mil, a excepción de 249 números, producen palíndromas en no más de 24 iteraciones. Tan sólo el 89 y 98 requieren las 24. De los capicúas encontrados, el mayor es 16,668,488,486,661, generado por el 6,999 (y su retrógrado), o por 7,998 (y su retrógrado) en 20 pasos.

Con esta información entonces, el reto consiste en escribir un programa, en el lenguaje que mejor conozca el lector/concursante, y haga los cálculos para precisamente los 10 mil primeros números, entregando en los resultados la cantidad de iteraciones que se hizo en cada uno de ellos. Si el número de iteraciones es mayor de 100 entonces debe considerarse como un número que no cumple con la conjetura, al menos en principio. Es decir, no hay que hacer más de 100 iteraciones con cada número.

Nuevo reto de la programación lúdica: el mejor programa en 1 KB de código fuente

El software que genere estos resultados en menor tiempo posible, “impreso” en un archivo de texto, será el vencedor.

Al ganador (si es de la Ciudad de México), le daré una taza con el logotipo de la Morsa. Si es de otro país o de provincia, le mandaré un USB de al menos 8 GB. La razón de esto es que mandar una taza por mensajería es estúpidamente caro.

Las soluciones me las pueden mandar a [email protected].

Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas que den el mismo tiempo al procesar la lista de 10 mil números, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto.

En este caso no hay restricción en qué lenguaje usar. El concursante tiene que mandar su código fuente, el ejecutable (si aplica) y los resultados obtenidos. El concurso tendrá una vigencia de unas tres semanas, aproximadamente.

Comentarios