h1

Números de Lychrel: buscando sus posibles mínimos en distintas bases

diciembre 2, 2019

Echando un ojeada sobre los números de Lychrel en Wikipedia (un número de Lychrel es un número natural que no puede formar un palíndromo a través del proceso iterativo repetitivo de invertir sus dígitos y sumar los números resultantes) nos aparece una tabla con los posibles números de este tipo más pequeños para ciertas bases escritos en esas bases. Si observamos los últimos números que están escritos, son estos:

26 op (649)
27 pq (701)
28 qr (755)
29 rs (811)
30 st (869)

Parece evidente que hay una secuencia clara de letras (que en realidad representan números) consecutivas. ¿Se conservará la secuencia en bases posteriores?

Combinando un par de programas sobre cambios de base (este y este), buscamos posibles números de Lychrel. El programa en python es este. El posible número de Lychrel es aquel en el que el programa no es capaz de continuar porque alcanza demasiadas iteraciones sin encontrar solución.

Lo encontrado es que la secuencia continúa para las bases 31, 32 y 33:

base 31: 929(tu)
base 32: 991(uv)
base 33: 1055(vw)

pero no para la 34 y 35:

base 34: 1799(liv)
base 35: 1922(ljw)

para regresar con las bases 36, 37, 38, 39, 40 y 41:

base 36: 1259(yz)
base 37: 1331(zA)
base 38: 1405(AB)
base 39: 1481(BC)
base 40: 1559(CD)
base 41: 1639(DE)

(en la que hemos representado el número mayor que z el A).

La secuencia se pierde de nuevo hasta la 46-49 y la 53-57:

base 42: 1595(BF)

base 43: 1762(EG)

base 44: 1891(GH)

base 45: 1934(GI)

base 46: 2069(IJ)
base 47: 2161(JK)
base 48: 2255(KL)
base 49: 2351(LM)

base 50: 2299(JN)

base 51: 2549(NO)

base 52: 4157(1rN)

base 53: 2755(PQ)
base 54: 2861(QR)
base 55: 2969(RS)
base 56: 3079(ST)
base 57: 3191(TU)

base 58: 3247(TV)

base 59: 3361(UW)

base 60: 3569(WX)

Si se quieren probar más secuencias, en este enlace están los posibles números de Lychrel más pequeños para cada base hasta base 20000. Están todos en base decimal, no habría más que cambiarlos de base.

NOTA: el programa subido llega hasta base 50. Puede llegar hasta base 93 sin más que aumentar el código:

def baseN(num, base, numerals=”0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO”):

añadiendo los términos definidos en la función SY2VA. Ambas pueden aumentarse añadiendo otros caracteres diferentes no usados según las correspondientes bases.

h1

Blender (trabajo de alumnos)

junio 11, 2019


Transformers, de Pablo



Supernenas, de Thalía y Diego



Billy y Mandy, de Sofía

h1

Comics con Blender

junio 5, 2019


Comic hecho por Julia Uría usando Blender


Comic hecho por Lucía Suárez usando Blender

h1

Ejemplos de manipulación de imágenes con GIMP

febrero 7, 2019

Algunos ejemplos de manipulación de imágenes usando GIMP hechos por los alumnos de 4ºESO de TIC.

h1

Blender, trabajo de alumnos

junio 18, 2018


Extracto de algunos trabajos de los alumnos con Blender

h1

Función DESREF de Excel para descifrar el tesoro Beale

octubre 17, 2017

Hace algún tiempo ya hice una entrada sobre esta historia que está expuesta en este comic de Cryptoclub. Los papeles con las cifras están en wikipedia. Tres hojas y solo una resuelta.

Las hojas contienen un conjunto de números. La solución conocida para la segunda es asociar cada número con una palabra de la declaración de independencia de los Estados Unidos de la época y quedarnos solo con la inicial. En su momento realicé programas en LOGO y Python como método de intento de resolución porque son muy versátiles para introducir diferencias en la manera en que podrían estar cifradas las hojas.

Se me ocurrió pensar si con una hoja de cálculo se podría implementar algo sencillo y la función DESREF resultó ser útil a este respecto. Combinándola con la función IZQUIERDA (que toma solo la primera letra de un texto) se puede usar de esta manera:

El uso sería el siguiente:

La primera columna (columna A) contiene solo los números de una de las hojas (en este caso la segunda que está resuelta), un número por fila.

La segunda columna (columna B) contiene el texto contra el que lo queremos confrontar (en este caso la declaración de independencia de los Estados Unidos) tal y como está resuelta la segunda hoja y también una palabra por fila.

En la tercera columna (columna B) escribimos la fórmula en la primera celda:

=IZQUIERDA(DESREF($A$1;A1-1;1))

y el resto autocompletamos.

Podemos observar que nos da el conocido texto “I have deposited…” (con los errores conocidos).

El modo de funcionamiento de DESREF en este caso es sencillo: tomo como origen siempre la primera celda (A1), de ahí que usemos referencias absolutas ($A$1). Nos desplazamos hacia abajo tanto como nos dice el número de la columna A (restando 1 para que todo cuadre), de ahí el uso de (A1-1) que lo hacemos relativo para el uso de autocompletar. El último número de DESREF hace mención a que debe desplazarse uno hacia la derecha desde el origen (es decir, que coja la columna B que contiene el texto ordenado).

Como curiosidad dejo la columna D con el resultado de coger la última letra de cada palabra en vez de la primera, sin más que cambiar la función IZQUIERDA por la función DERECHA.

h1

Triángulo de Pascal en python y convergencia del cociente de los números centrales

octubre 9, 2017

El triángulo de Pascal presenta muchas curiosidades. Fijándome en los números centrales (1,2,6,20,70,252, etc.) me pareció que el cociente de dos de estos números sucesivos convergían al número cuatro o a algún número cercano a cuatro. Podemos ver que:

2/1 = 2
6/2 = 3
20/6 = 3.33
70/20 = 3.5
252/70 = 3.6

Así que aproveché para hacer un par de pequeños programas en python sobre el particular. En primer lugar un programa para sacar las filas del triángulo (empezando a partir de las cuarta fila, dado por sabida la tercera que es 1 2 1):

#programa para calcular el triangulo de Pascal
fila_antigua = [1,2,1]
numero = 20
for i in range (1,numero):
lon_antigua = len(fila_antigua)
fila_nueva = [1]
for j in range(0,lon_antigua-1):
calculo = fila_antigua[j]+fila_antigua[j+1]
fila_nueva.append(calculo)
fila_nueva.append(1)
print(fila_nueva)
fila_antigua = fila_nueva

El resultado son las filas del triángulo:

[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
[1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1]
[1, 12, 66, 220, 495, 792, 924, 792, 495, 220, 66, 12, 1]
[1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1]
[1, 14, 91, 364, 1001, 2002, 3003, 3432, 3003, 2002, 1001, 364, 91, 14, 1]

Con pocas modificaciones en el programa calculamos el cociente entre estos números centrales:

#programa para calcular el triangulo de Pascal
#queremos calculas proporciones entre el valor medio
fila_antigua = [1,2,1]
numero = 40000
centro2 = 2
centro1 = 1
for i in range (1,numero):
lon_antigua = len(fila_antigua)
fila_nueva = [1]
for j in range(0,lon_antigua-1):
calculo = fila_antigua[j]+fila_antigua[j+1]
fila_nueva.append(calculo)
fila_nueva.append(1)
#print(fila_nueva)
print (centro2/centro1)
if (lon_antigua%2) == 0:
centro1 = centro2
centro2 = fila_nueva[int(len(fila_nueva)/2)]
#print(centro2)
fila_antigua = fila_nueva

Hemos calculado con 40000 filas. Los últimos resultados son estos:

3.999899964987746
3.999899964987746
3.9998999699909974
3.9998999699909974
3.9998999749937485
3.9998999749937485
3.999899979995999
3.999899979995999
3.9998999849977497
3.9998999849977497
3.9998999899989998
3.9998999899989998
3.99989999499975
3.99989999499975
3.9999

Se ve claramente que parece que converge a 4.

Podemos intentar hacer un poco de matemáticas a ver si se puede comprobar esta convergencia. Para ello podemos expresar estos números centrales como el cociente binomial:

Podemos observar que los números centrales expresados como cociente binomial son de la forma (2n n), pues son (2 1), (4 2), (6 3) que sería el siguiente que no sale en la imagen, etc. Según esto el cociente entre números centrales sucesivos en forma de cociente binomial sería (2[n+1] n+1) / (2n n). Desarrollando con la fórmula del binomio y simplificando, este cociente puede expresarse así: (2n+2)*(2n+1)/(n+1)*(n+1). Calculando este límite cuando n tiende a infinito (puede verse el resultado en este enlace) nos da el resultado de 4.

PD.: hace algún tiempo había hecho un vídeo sobre una extensión del triángulo de Pascal a tres dimensiones