jueves, 27 de abril de 2017

Curiosidades con cifras a trozos


Hace unas semanas se publicó en Twitter la siguiente curiosidad:


Al resolverla he tenido la idea de buscar situaciones semejantes que se puedan resolver con hoja de cálculo, que es lo nuestro, o con PARI, que permite más velocidad en las búsquedas. Para ello necesitaré la función TROZOCIFRAS, que extrae un grupo de cifras de la expresión decimal de un número. Deberá tener tres parámetros. Así, TROZOCIFRAS(m;n;p)  extraerá en las cifras del número m aquellas que comienzan en el número de orden n y terminen en p. Por ejemplo, TROZOCIFRAS(28732;2;4)=873. Hay que advertir que se cuentan las cifras de derecha a izquierda. Así, TROZOCIFRAS(876253;1;5)=76253.

Esta función necesita para su funcionamiento otra, NUMCIFRAS(m), función que nos cuenta las cifras de un número natural. Dejamos los listados de TROZOCIFRAS y NUMCIFRAS para el Anexo de esta entrada. Hemos suprimido, por brevedad, la condición de que m sea natural. Puedes copiarlos en la sección de funciones y macros de tu hoja de cálculo.

Con estas dos funciones, la condición del acertijo se expresaría como

If Sqr(trozocifras(m;2;3))+trozocifras(m;1;1)=sqr(m) then print(m)

Lo aplicamos a números de tres cifras, para no tener que añadir más condiciones, y al recorrer desde 100 hasta 999 aparece la solución, 169, que cumple que RAIZ(169)=RAIZ(16)+9=4+9=13

Podemos escribir:

For m=100 to 999
If Sqr(trozocifras(m;2;3))+trozocifras(m;1;1)=sqr(m) then print(m)
Next m

Prueba algo similar con cuatro cifras. Si las descompones en grupos de dos, no existe ninguna propiedad similar, es decir:


Tampoco parece existir solución para 


Hay más posibilidades y con mayor número de cifras. Lo dejamos abierto.

En el lenguaje PARI la función TROZOCIFRAS queda como 

cutdigit(a, p, q)=(a%10^q)\10^(p-1)

y la búsqueda

cutdigit(a, p, q)=(a%10^q)\10^(p-1)
for(n=100, 999, if(sqrt(cutdigit(n, 2, 3))+cutdigit(n, 1, 1)==sqrt(n), print(n)))

Comprobamos que encuentra el 169



Otra adivinanza

¿Existe algún número de tres cifras ABC que cumpla que ABC=AB*C+A*BC? 

Si no deseas ver la solución, no sigas leyendo e intenta tú una búsqueda.

Bastará complicar un poco las condiciones anteriores, por ejemplo, así:

For m=100 to 999
If trozocifras(m;2;3)*trozocifras(m;1;1)+trozocifras(m;3;3)*trozocifras(m;1;2)=m then print(m)
Next m

Hemos encontrado así la solución única, que resulta ser 655, ya que 65*5+6*55=325+330=655. Puedes intentarlo con PARI.

Juego de las matrículas

En este invierno, Joseángel Murcia, @tocamates propuso en Twitter un juego de encontrar en nuestros paseos matrículas españolas (cuatro dígitos) en los que los dos últimos formaran el producto de los dos primeros. La cuestión era más lúdica que matemática, pero con nuestra función TROZOCIFRAS se puede conseguir un listado. Basta plantear la condición

For m=1000 to 9999
If trozocifras(m;1;2)=trozocifras(m;4;4)*trozocifras(m;3;3) then print(m)
Next m

Estos son, por ejemplo, los que comienzan en 3 y cumplen la condición:


Evidentemente, esto no tiene más valor que el de un ejemplo trivial.

Menos trivial es preguntar si una matrícula ABCD cumple que (AB)^2+(CD)^2=ABCD.

La respuesta es que existen dos soluciones, 1233=12^2+33^2 y 8833=88^2+33^2. Lo puedes comprobar con la condición

If trozocifras(m;3; 4) ^ 2 + trozocifras(m; 1; 2) ^ 2 = m Then print m

Un trozo múltiplo de otro

A veces las búsquedas de este tipo se deben acotar un poco para evitar resultados triviales. Proponemos otro ejemplo:

¿En cuántos números de tres cifras ABC se cumple que AB es múltiplo de BC?

En esta propuesta, si nos limitamos a lo que se pide, nos resultan demasiados casos, con lo que pierden interés:


Se observa que resultan casos triviales en los que B=0, lo que facilita que se cumpla la condición, o aquellos, como el 333, en el que AB=BC, con lo que es múltiplo trivialmente. Buscaremos de nuevo, pero exigiendo que BC sea mayor que 9, para evitar el cero central, y que AB<>BC. De esta forma obtenemos un resultado más restringido.

421,  517, 526, 724, 842, 913, 923, 931, 947

Es curioso que todos presentan cifras distintas.

Anexo

Public Function numcifras(n)
'Calcula el número de cifras enteras de un número natural. Si no lo es, devuelve un cero

Dim nn, a

a = 1: nn = 0
While a <= n
a = a * 10: nn = nn + 1
Wend
numcifras = nn
Else
numcifras = 0
End Function


Public Function trozocifras(m, n, p)
‘Extrae cifras de m desde el orden n (por la derecha) hasta el orden p. Si no es lógico devuelve -1
Dim a, b, c, d


c = numcifras(m)
If n > c Or p > c Then
  trozocifras = -1
  Else
  a = 10 ^ p
  d = 10 ^ (n - 1)
  b = m - Int(m / a) * a
  b = Int(b / d)
  trozocifras = b
  End If
Else
trozocifras = -1
End Function

domingo, 16 de abril de 2017

Hoja Cartesius(3) Arreglos con cuentas


Para una mejor comprensión de esta entrada es conveniente que te leas las dos anteriores de la serie, publicadas en las direcciones. Basta con que uses la etiqueta "Cartesius" en el lateral derecho.

Permutaciones con cuentas

Imagina que creamos un producto cartesiano considerando el orden y la repetición de elementos, pero exigimos el número de repetición de alguno de ellos.

Por ejemplo, deseamos construir permutaciones con siete elementos a partir de los números 2 y 3, pero deseamos que aparezca en cada arreglo 4 veces el 2 y tres veces el 3. Para eso debemos usar las condiciones, que filtran el producto cartesiano total para adaptarlo a nuestros deseos. Puedes intentar escribir esto como planteamiento:

XTOTAL=7
XT=2,3
CONTAR(2)=4
CONTAR(3)=3

Pulsa en Iniciar y obtendrás 35 arreglos, 7!/(3!*4!)=7*5=35, según la fórmula elemental



De igual forma, podría interesarnos marcar un mínimo a algunos elementos. Por ejemplo, permutar con repetición los números 1, 2, 3, 4 y 5, pero exigiendo que al menos se repita el 2 tres veces.

Escribiríamos

XTOTAL=5
XT=1..5
CONTAR(2)>2

Obtendríamos un número algo extraño, el 181. Razonamos de dónde procede.

Clasificamos los arreglos según las veces que aparece el 2, y nos daría

C(5,3)*VR(4,2)+C(5,4)*VR(4,1)+C(5,5)*VR(4,0) = 10*4^2+5*4+1*1 = 160+20+1 =181

Los números combinatorios representan los lugares que ocupa el 2 repetido, y las variaciones con repetición los otros números que le acompañan en cada arreglo. Es interesante, para quienes se inician en estos temas, recorrer los 181 resultados e identificar cada grupo para contarlos mejor y llegar a 160, 20 y 1. Si en los controles activas que el resultado sea un número, podrás verlos de forma más compacta:


Observarás que vamos recorriendo los temas de la Combinatoria clásica, pero pronto nos desviaremos a otras cuestiones.

Variaciones con cuentas

Lo que sigue no se suele estudiar en Enseñanza Media. Imaginemos que deseamos construir variaciones (se tienen en cuenta el orden y los elementos), pero que sometemos alguno de estos a una cuenta. Por ejemplo, tomemos los siete primeros números naturales. Formemos con ellos variaciones con repetición tomados de 5 en 5. Si no imponemos más condiciones, el número de arreglos sería 7^5=16807.

Sobre esa base, si deseamos que los elementos 2 y 3 se repitan exactamente dos veces cada uno, la estructura de los arreglos cambia totalmente. Con Cartesius se puede resolver el problema con este planteo:

XTOTAL=5
XT=1..7
CONTAR(2)=2
CONTAR(3)=2

No se añade REPITE porque es la opción por omisión en la construcción de las variaciones. Al pulsar en Iniciar observamos que sólo quedan 150 casos posibles (con LibreOffice Calc tardará un poco. Para ver que no ha terminado observa la celda A1 de la hoja Producto). Aquí tienes un fragmento de la tabla:



Resultan 150 casos porque 2, 2, 3, 3 admiten 24/(2*2)=6 posibilidades y a cada uno le acompañan uno de los restantes elementos, 1, 4, 5, 6, y 7, que además se pueden situar en cinco sitios, luego 6*5*5=150. Como en un ejemplo anterior, podemos expresarlo como C(4,2)*VR(5,2)

Fórmula general

Supongamos que combinamos m números tomados de n en n con orden y repetición, en los que p de ellos están sometidos a unas cuentas r1, r2,...rp que suman s. Vemos que en el recuento de las variaciones posibles debemos multiplicar tres factores.

1) Posibles ordenamientos de los p elementos forzados a repetir: s!/(r1!r2!...rp!)

2) Variaciones de los restantes: (m-p)^(n-s).

3) Formas de intercambiarse los s que admiten cuentas con los n-p elementos del arreglo que no obedecen a esa cuenta. Serían n!(s!(n-s)!)

Multiplicamos y quedaría:


Simplificando entre s! y uniendo fracciones:



Lo comprobamos con el anterior ejemplo: m=7, n=5, p=2, s=4, r1=2, r2=2
V7,5,2,2=5!/(2!2!1!)*51=30*5=150, que era la respuesta de Cartesius.

Comprobamos la fórmula con otros ejemplos:

Variaciones de siete elementos tomados de 6 en 6, en las que el 2 se debe repetir dos veces. Lo programamos en Cartesius y obtenemos 19440 soluciones.

XTOTAL=6
XT=1..7
CONTAR(2)=2

(Hemos optado por un NO en la opción de Ver desarrollo. Hay que tener paciencia, porque tarda. En algunas versiones de Excel se para la aparición, pero luego vuelve)



Comprobamos la fórmula: m=7, n=6, p=1, s=2,  r1=2,

V7,6,2,2 = 6!/(2!4!)64=15*1296=19440

Una última comprobación:

Siete elementos tomados de 5 en 5, en los que el elemento 2 (podría ser otro. No afecta al resultado) se repite 3 veces.

Usamos estas condiciones en Cartesius:

XTOTAL=5
XT=1..7
CONTAR(2)=3

360 posibilidades.



Calculamos: m=7, n=5, p=1, s=3, r1=3

V7,5,3,3 = 5!/(3!2!)62 = 120/12*36 = 360

Proponemos otro cálculo, que no explicaremos.

Variaciones de 8 objetos tomados de seis en seis, de los que un elemento (puede ser el 2) se repite dos veces y otro, (por ejemplo el 3)  tres. Te deben resultar 360. Comprueba con la fórmula. Las primeras variaciones serían estas:



Estos ejemplos con más de cinco elementos por arreglo pueden tardar bastante. Paciencia.

Otros condicionamientos

Hemos condicionado las variaciones fijando el número de apariciones de un elemento, pero podemos pensar en otros muchos condicionamientos.

Desarrollaremos ahora algunos para que te vayas familiarizando con el manejo de Cartesius.

Igualdades y desigualdades

Imaginemos que deseamos formar todas las permutaciones con repetición de los números 1, 2, 3 y 4 (256 en total, es decir 4*4*4*4), pero que deseamos que el primer elemento sea igual al segundo, y que este sea mayor que el tercero. Los elementos aislados se representan en Cartesius como X1, X2, X3,… Por tanto, lo que deseamos es que X1=X2 y que X2>X3.

En este tipo de programas la conectiva lógica Y se puede sustituir por el producto *, ya que VERDADERO suele ser equivalente a “distinto de cero” y FALSO a “igual a cero”. Por eso, las dos condiciones unidas se pueden escribir como (X1=X2)*(X2>X3).

Para introducir estas fórmulas condicionantes usamos el prefijo ES, por lo que escribiremos:

XTOTAL=4  Número de elementos que se toman
XT=1..4       Conjunto con el que se forma el producto cartesiano
ES (X1=X2)*(X2>X3)  Condición añadida

No escribas los comentarios en cursiva, que pueden alterar el funcionamiento. Debes usar estas condiciones de abajo.

XTOTAL=4
XT=1..4
ES (X1=X2)*(X2>X3)

Iniciamos, y obtenemos 24 arreglos en lugar de los 256 previstos:



Este ejemplo te dará idea de la potencia de cálculo y planteamiento que puedes obtener con la hoja Cartesius.

Aquí no merece la pena buscar una fórmula teórica (puedes intentarlo), porque al depender el número de arreglos del primer elemento, no sería práctica.

lunes, 3 de abril de 2017

Números piramidales (2): Tetraedros.


Esta entrada forma serie con otra ya publicada, cuya lectura se recomienda, situada en la dirección

http://hojaynumeros.blogspot.com.es/2017/03/numeros-piramidales1-definiciones-y.html

A los números piramidales triangulares se les conoce también como tetraédricos, o simplemente tetraedros (abreviado, TET), en recuerdo del primer poliedro regular. Todos ellos se forman a partir del 1 adosando los distintos números triangulares, 3, 6, 10, 15, 21, 28… por lo que también podemos decir que los tetraédricos equivalen a las sumas parciales de los triangulares.



TET(1)=1
TET(2)=1+3=4
TET(3)=4+6=1+3+6=10
TET(4)=10+10)1+3+6+10=20

La lista de los primeros será, pues:

1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, 1140, 1330, 1540, 1771, 2024, 2300, 2600, 2925,… http://oeis.org/A000292

La puedes reproducir con la calculadora Calcupol que presentamos en la anterior entrada de esta serie.

http://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#figurados

Basta fijar el tipo en Piramidal, el orden en 3, y escribir en pantalla 1. Con esto, cada vez que pulses en la Tecla PROX se formará un nuevo piramidal tetragonal. En la imagen llegamos hasta 969:



La formula para estos números se simplifica mucho. Recordamos la expresión general para todos los piramidales:

Hacemos k=3 y queda:


Esta expresión nos suena familiar, y es que equivale al número combinatorio n+2 sobre 3:


Por ejemplo, el tetragonal de orden 7 es 84, y equivale a (7*8*9)/6=504/6=84
Puedes usar la expresión de hoja de cálculo COMBINAT, para calcular el número combinatorio:

Y ya, por repasar más detalles, con nuestra calculadora combinatoria puedes usar las teclas 9 C 3:



La tienes en la dirección

http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#calcucomb

Por ser números combinatorios de orden 3, los tetraedros se situarán en la cuarta fila del triángulo de Pascal:



(Imagen adaptada de otra contenida en Wikipedia.es)

Por cierto, y como era de esperar, los números triangulares se presentan en la anterior paralela.

Curiosidades

Al igual que hicimos con cuestiones similares, desarrollaremos a continuación algunas propiedades, muchas de ellas tomadas de http://oeis.org/A000292

Suma de diferencias

Si, como es costumbre en oeis.org, comenzamos la sucesión por el 0, resulta que cada número tetragonal de orden n es suma de todas las diferencias b-a que se pueden formar entre los números 1, 2, 3, … n entre sí, si b>=a (Amarnath Murthy, May 29 2003). Lo vemos mejor con un esquema de esas diferencias. La imagen contiene el desarrollo para el tetragonal 20:



Las cabeceras de filas y columnas están formadas por los números del 1 al 5. En el centro figuran las diferencias entre ellos sin contar las negativas, y a la derecha figuran sus sumas por filas. El número 20 resulta como suma de todas las diferencias del interior. Como ese número, por definición, es suma de triangulares, se formará a partir de 10+6+3+1, que son triangulares porque cada uno es suma de enteros consecutivos 1, 2,… k.

Suma de productos

El mismo autor, Amarnath Murthy, nos propone otra igualdad interesante, y es proceder a multiplicar todos los sumandos posibles p y q cuya suma es n+1, y todos los productos también sumarán un número tetragonal. En este caso es más una curiosidad algebraica que aritmética, pues se justifica así:

Suma de productos p*q con p+q=n+1:

1(n+1-1)+2(n+1-2)+3(n+1-3)+…+n(n+1-n)=n(n+1)(n+1)/2-1^2-2^2-…n^2

Pero la suma de cuadrados es n(n+1)(2n+1)/6

Restamos y queda n(n+1)(n+1)/2- n(n+1)(2n+1)/6 =n(n+1)(3n+3-2n+1)/6=n(n+1)(n+2)/6

Como es la expresión del tetragonal de orden n, ya lo tenemos demostrado. Un esquema con hoja de cálculo aclara bastante el proceso. En este caso no se considera el 0 como inicio de la sucesión:



Suma de cuadrados

Un número tetragonal, si tiene lado par n, coincide con la suma de los cuadrados de todos los números pares comprendidos entre 1 y n/2. Por ejemplo:

El tetragonal 56=TET(6) equivale a la suma 2^2+4^2+6^2=4+16+36=56. Basta aplicar la suma de cuadrados consecutivos, ((n(n + 1)(2n + 1)) / 6), al caso n/2 y después multiplicar por el factor común 2^2=4. En cuanto desarrollemos
obtenemos TET(n)= n(n+1)(n+2)/6:

Suma cuadrados pares es  4(n/2)(n/2+1)(n+1)/6=n(n+1)(n+2)/6

Si es impar, bastará sumar el mismo número de cuadrados impares. Como 35=1^2+3^2+5^2=1+9+25

Basta ver que la suma de ambos daría la de todos los cuadrados, en este caso, 56+35=91, que coincide con (6*7*(2*6+1))/6=7*13=91, luego es válida la posibilidad de sumar cuadrados impares.

Fórmula de recurrencia

Al tener expresión algebraica sencilla, los números tetragonales permiten fácilmente una expresión recurrente. En concreto es:

TET(n) = n + 2*TET(n-1) - TET(n-2)

La demostración es inmediata: n + 2*TET(n-1) - TET(n-2)=n+2*(n-1)*n*(n+1)/6-(n-2)(n-1)n/6 y simplificando llegamos a n(n+1)(n+2)/6=TET(n)
Si disponemos estos números en columna, podemos aplicar a cada dos de ellos esta fórmula de recurrencia:



Las líneas nos indican que 35 depende de los dos anteriores, 10 y 20, y de su número de orden 5, mediante la operación 35 = 5+2*20-10 = 35

Equivalencia con un triangular

Una cuestión interesante es estudiar la posibilidad de reducir un número tetraédrico a un triangular puro, como si “aplanáramos” la pirámide hasta convertirla en un número triangular con un lado distinto. Basta aplicar el criterio para que m sea triangular, y es que 8m+1 sea cuadrado. Pues bien. Aplicando ese criterio, sólo se han encontrado cinco números tetraédricos que sean también triangulares: 1, 10, 120, 1540 y 7140. Si aplicamos el criterio al cuarto, nos queda:

8*1540+1 = 12321 = 111^2

Por cierto, la equivalencia con un cuadrado aún es más escasa: sólo son cuadrados los tetraédricos 1, 4 y 19600.