Mostrando entradas con la etiqueta Ludopatía matemática. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ludopatía matemática. Mostrar todas las entradas

viernes, 20 de junio de 2025

Matemática recreativa: capicúa de 6 cifras impares y divisible entre todas sus cifras

Vamos a por otro problema (n. 97) del libro "Ludopatía Matemática" de Mariano Mataix. Tiene el siguiente enunciado:

Veamos, una vez más, cómo está su teoría de números. Han de determinarse dos números, cada uno de 6 cifras impares. Ambos son capicúas y cumplen la condición de que ninguna cifra se repite más de dos veces. Además, cada número es divisible por cada una de sus cifras.

Imagen creada con IA
 
Como en entradas anteriores (1, 2, 3, 4, 5, 6) donde abordé otros problemas del libro, he construido un algoritmo en Python para resolver el problema. El nivel del problema es fácil para resolver, utilizando la función permutations del módulo itertools.

Ver código en repositorio de GitHub.

lunes, 26 de mayo de 2025

Problema: siguiente, mitad y conserva cifra final 10 veces.

El problema 27 del libro "Ludopatía Matemática" de Mariano Mataix tiene el siguiente enunciado:

Hay que hallar un número tal que si le sumamos una unidad y lo dividimos por 2, el número que resulta termina en la misma cifra que el original.

Repitiendo la operación con el resultado obtenido ocurre lo mismo, es decir, el nuevo número acaba en la misma cifra. Siguiendo así, durante 10 veces se obtiene siempre la misma cifra, pero en la undécima vez ya la terminación es diferente. Un dato más: el número buscado ha de ser el más pequeño que cumple la condición.


Así que igual que en entradas anteriores (1, 2, 3, 4, 5) he construido un algoritmo en Python para resolver el problema. El nivel del problema es facilito para resolver mediante algoritmo.

Ver código en repositorio de GitHub.


El problema 31 plantea una variante del anterior:

Hay que hallar un número tal que si le sumamos una unidad y lo dividimos por 2, el número que resulta termina en una cifra diferente que el original. Repitiendo la operación con el resultado obtenido ocurre lo mismo, es decir, el nuevo número acaba en una cifra diferente. Siguiendo así, durante 10 veces se obtiene siempre una última cifra diferente, pero en la undécima vez ya la terminación es igual. Un dato más: el número buscado ha de ser el más pequeño que cumple la condición.


Ver código en repositorio de GitHub.



lunes, 28 de abril de 2025

Menor número con un número exacto de divisores

El problema 24 del libro Ludopatía Matemática, de Mariano Mataix Lorda, es el siguiente:

¿Cuál es el menor número con exactamente 100 divisores?

Una vez resuelto con Python podemos aprovechar para generalizar el problema al siguiente:

¿Cuál es el menor número con exactamente m divisores?

He subido a mi repositorio de matematica-recreativa en GitHub una solución utilizando la librería sympy, que calcula los divisores de un número dado (también se puede implementar dicha función fácilmente).

Imagen extraída de joguiba.com


La pregunta es ¿siempre existirá dicho número? Es decir, dado cualquier número natural positivo m, ¿podemos encontrar un natural con exactamente m divisores?

La respuesta es que sí. Si tenemos la factorización en números primos de un número, podemos calcular sus divisores como el producto de los exponentes aumentados en una unidad.

Por ejemplo, el número 18 factoriza de la siguiente manera 18 = 2^1 · 3^2. Si aumentamos los exponentes en una unidad y los multiplicamos obtenemos (1+1) · (2+1) = 2 · 3 = 6. Por lo que el número 18 tiene 6 divisores.
Div(18) = {1, 2, 3, 6, 9, 18}

Por tanto, a la pregunta de si siempre existirá dicho número con exactamente m divisores debemos contestar que sí porque una cota superior siempre será 2^(m-1), que por lo anterior sabemos que tiene m divisores.

¿Podríamos utilizar esto para abordar la programación de la solución desde otro enfoque? ¿Será más rápido, más lento o dependerá del caso?

Si alguien se anima a implementar las dos formas (calculando divisores o utilizando los exponentes de la factorización) para comparar casos que nos cuente sus resultados en los comentarios.

miércoles, 23 de abril de 2025

Reto de "vibe coding" para matemática recreativa: potencias de 10 como suma de números con cifra 8

Imagen creada con IA

 En los últimos meses se habla y escribe mucho acerca del "vibe coding", incluso llevado a su extremo en el que una persona que no tiene ningún conocimiento sobre Programación puede realizar programas funcionales pidiendo a herramientas de inteligencia artificial que construya el código, únicamente escribiendo en lenguaje natural lo que quiere que haga el programa.

Así que he aprovechado este boom mediático para proponer un reto, tanto a los "vibe coders" con pocos o sin conocimientos en Programación como a los programadores más expertos.

De nuevo saco un problema del libro Ludopatía Matemática, de Mariano Mataix Lorda.


ENUNCIADO DEL PROBLEMA

Queremos conocer las primeras dos potencias de 10 que pueden escribirse como sumandos cumpliendo las siguientes condiciones:

  • Cada sumando debe estar formado sólo por la cifra 8 (ejemplos: 8, 88, 888, ...)
  • El total de ochos utilizados en todos los sumandos debe ser también un número formado sólo por la cifra 8 (ejemplos: 8, 88, 888, ...)

La primera solución es 10^3:
    1000 = 888 + 88 + 8 + 8 + 8
Está escrito como suma de números formados sólo con la cifra 8 y el total de ochos utilizados es igual a 8.

¿Cuál es la siguiente potencia de 10 que cumple las condiciones impuestas por el enunciado?

Imagen creada con IA

Lo que me parece más interesante es que por favor pongáis en los comentarios si habéis hecho vibe coding y en caso afirmativo que pongáis aquí qué herramienta de inteligencia artificial habéis utilizado, el código creado y la solución del problema.

¡Os leo!