martes, 23 de diciembre de 2008

Feliz Navidad

Desde este humilde blog deseo una Feliz Navidad a las personas que lo visiten.

Con motivo de las fiestas descansaremos un par de semanas, para volver en Enero con dos códigos de función que tengo prometidos.

Felicidades para tod@s

miércoles, 17 de diciembre de 2008

Un capicúa en la meta (2)

Tal como prometí, cuento algún detalle que he descubierto jugando un poco con el algoritmo 196

Llamaré meta al capicúa en el que termina el algoritmo aplicado a un número (semilla) y ruta al conjunto de números que se recorren hasta llegar desde la semilla hasta la meta.

Metas capicúas de dos cifras: Es evidente que los números semilla que desembocan en el mismo capicúa tienen todos la misma suma de cifras y esta es menor que 10. Por ejemplo, 70,61,52,43,34,25,16,7 desembocan en 77=11*(a+b) con a+b<10 n="11*(a+b)">10=11(10m+n)=110m+11n. ¿Quienes llegan al 484?

Metas de tres cifras: Se puede demostrar que sólo son metas los capicúas en los que la cifra del centro es par, como 343, 929, 787,…y por tanto no lo son 232, 878 o 171. Intenta demostrarlo, que no es complicado.

Metas de cuatro cifras: Han de ser múltiplos de 11. Prueba a demostrarlo.

Números ilustres: Los números 495 y 1089, están ambos en la misma ruta que desemboca en el 79497. Además, tienen como meta el 1089 los múltiplos de 198 de tres cifras, y otra curiosidad: Los 10 primeros múltiplos de 1089 llegan todos hasta el 79497.

Si no recuerdas el porqué de que les llame “ilustres” al 495 y al 1089, consulta esta dirección:

http://www.hojamat.es/sindecimales/aritmetica/propuestas/proparit.htm

Ahí te enterarás de que 495 es la constante de Kaprekar para tres cifras. Si elegimos como semilla la constante para cuatro cifras 6174, también tiene como meta 79497, lo que nos confirma que ambos algoritmos están relacionados.

Es curioso que 6174+4716 = 10890 = 1089+9801.

Continuaremos en una próxima entrada con el estudio de los códigos de las funciones INVERTIR_CIFRAS y ESCAPICUA.

jueves, 11 de diciembre de 2008

Un capicúa en la meta (1)


En el blog “Espejo lúdico”, con fecha 9 de Diciembre de 2008, se ha publicado esta propuesta:

Si a un número se le suma su reverso (por ejemplo 75 + 57) y se hace lo mismo con el resultado, llega un momento en que el resultado es capicúa.

Por ejemplo
75 + 57 =132; 132 +231 = 363

Para un cierto número de dos cifras es necesario repetir este proceso más de 10 veces. ¿Cuál es ese número? […]

El algoritmo propuesto tiene fácil ejecución para quien sepa sumar, pero no es tan simple para una hoja de cálculo como OpenOffice.org Calc. Hay que tener en cuenta que los números se almacenan en formato binario. Por tanto, si no definimos nuevas funciones, no podrá invertir las cifras de un número ni tampoco averiguar si es capicúa o no. Así que necesitamos:

Función INVERTIR_CIFRAS: Debe de actuar sobre un número e invertir el orden de todas sus cifras, devolviéndonos el resultado.
Función ESCAPICUA: Debe averiguar si un número es capicúa o no y devolver, por ejemplo, un 1 si es capicúa y un 0 si no lo es.

En nuestra entrada anterior os invitábamos a crear vuestras propias funciones. Las dos que proponemos hoy son algo complejas, por lo que las desarrollaremos en próximas entregas. Hoy os invitamos a usar el algoritmo para averiguar (para números no muy grandes) cuántos pasos son necesarios para que un número desemboque en un capicúa sumando de forma reiterada su reverso. Se suele nombrar como el algoritmo "196”.

Lo podéis descargar en esta dirección y ver cómo está construido. Una vez descomprimido, al abrirlo te puede pedir "Activar macros". Debes tener un nivel de seguridad Medio (Ver Herramientas - Opciones). Si usas la versión 2, quizás aparezcan decimales en iteraciones largas. Con la versión 3 no he tenido problemas.

Jugando un poco con él se me han ocurrido dos cuestiones para pensar un poco en ellas y ver qué hay publicado en la red:

(a) ¿Se puede establecer alguna relación entre dos números que comparten el mismo capicúa como final del proceso? Por ejemplo, 154, 208 y 109 desembocan en el capicúa 1111. No siempre esa relación es la de tener la misma suma de cifras.

(b) ¿Qué números capicúas nunca aparecerán como resultado de este algoritmo? Ese parece ser el caso del 212 y el 232.

Si lo descubro os lo contaré. Igualmente, espero vuestros comentarios.

En próximas entregas se explicarán las dos funciones propuestas.



miércoles, 3 de diciembre de 2008

Define tus propias funciones en OpenOffice.org Calc


En ocasiones desearás definir otras funciones además de las que OpenOffice.org Calc te ofrece. Por ejemplo, sería útil una función tal que si se aplica a un número entero positivo devuelva su mayor divisor. Para ello disponemos del lenguaje Basic (de macros) que lleva incorporado Calc. 

A partir de esta entrada iremos explicando en otras sucesivas la forma de implementar algunas funciones. Antes de nada hay que aprender a definirlas en el Editor de Basic.

Editor de Basic

Crea una hoja o abre alguna existente. Para abrir el editor sigue la secuencia: Menú Herramientas > Macros > Organizar macros > OpenOffice.org Basic.

Si es la primera función que defines, busca la carpeta correspondiente al nombre de tu hoja de cálculo (si lo acabas de crear, se llamará Sin Nombre o Sin Título). No señales la otra carpeta Standard, que es más general. Si ya has definido algunas funciones, habrás definido un módulo contenedor. Abre ese módulo.

Si no habías creado ningún módulo, una vez elegida la carpeta, pulsa el botón Nuevo para abrir un nuevo módulo contenedor. Se te ofrecerá el nombre de module1, module2 u otro similar. Acepta el nombre o cámbialo según tu criterio. Al aceptar el nombre se abrirá el editor de macros. Por defecto aparecerá la macro Main, que puedes borrar o ignorar.



Escritura del código

Terminada la secuencia anterior, borra lo que esté escrito de la macro Main y escribe el código de una función:

Debes comenzar con

Function nombre de la función ( argumento )

y terminar con

End function

y entre ambas, el código de la función. En ese código debemos usar el nombre de la función seguida del signo igual y de su definición

Es mejor verlo con un ejemplo:

Function cubo ( numero )
cubo=numero*numero*numero
End function

En el ejemplo, el nombre de la función es cubo, y su argumento numero (lo traduciríamos como "Cubo de un número")

Después volvemos a escribir cubo, el signo igual, y su definición.

Uso de la función

Una vez escrito el código, cierra el Editor de Basic y usa tu función en cualquier celda. En la imagen puedes ver que en B2 se ha escrito un número y en B4 la fórmula =CUBO(B2)

Con esto ya tienes definida la función. 

Con la técnica explicada, esa función sólo estará activa en la hoja de cálculo en la que la has creado, no en otras. Al cerrar la hoja ya no podrás usarla. 

(Continuará)

lunes, 1 de diciembre de 2008

Resolución con dos teclas

Intentemos resolver el siguiente problema con calculadora u hoja de cálculo:

Encontrar varios números naturales consecutivos cuyo producto sea igual a un número natural N dado.

(a) Con dos números es inmediato: Si sabemos con seguridad que la ecuación x(x+1)=N tiene soluciones enteras, como sería x(x+1)=132, es posible encontrar la solución de la ecuación con las teclas de raíz cuadrada y parte entera. En la hoja de cálculo se usaría =ENTERO(RAÍZ(N)) (En Excel escribe RAIZ sin tilde)

En efecto ENTERO(RAÍZ(132))=11, que es la solución de x(x+1)=132, pues 11*12=132.

La razón de que esto funcione es la desigualdad

 También funciona este procedimiento para x(x+1)(x+2)=N. Así,  la solución de x(x+1)(x+2)=13800 es la parte entera de su raíz cúbica, que en hoja de cálculo se expresaría como =ENTERO(N^(1/3)), y en el ejemplo nos daría la solución 23, y comprobando, 23*24*25=13800.

La razón aquí es una desigualdad similar a la anterior
 
Esta no es trivial. Razónala si así lo deseas.

¿Ocurriría lo mismo con cuatro números consecutivos? Pues no exactamente, pues necesitarías dos teclas y algo más. Quizás el siguiente desarrollo te dé una idea, pero razona o demuestra todo con rigor, que hay alguna dificultad.

En vista de esto, podíamos intentar procedimientos similares para cinco o seis números. Inténtalo, y que no te pierdas con tanto polinomio

Combinado de murciélago

La palabra MURCIELAGO ha sido usada tradicionalmente para la codificación en pequeños comercios, por tener diez letras distintas (5 vocales y 5 consonantes) que se pueden usar para representar las cifras de 0 a 9 en una asignación decidida por cada comerciante: M=0, C=1, E=2, etc.

Sobre ella se pueden plantear muchos problemas de distintos niveles. Aquí hemos elegido unos cuantos:

(a) ¿De cuántas formas se pueden ordenar las letras de MURCIELAGO, de forma que no caigan todas las vocales seguidas? (Se prohíben permutaciones como MRCOAEIULG)

(b) ¿Y si deseamos que nunca aparezcan vocales consecutivas, aunque sólo sean dos? (Deseamos que todas estén separadas)

(c) ¿Y si, por el contrario, deben estar las cinco vocales consecutivas y en su orden natural?

Se pueden inventar más, pero la Combinatoria cansa mucho. Suerte con ellos.