miércoles, marzo 15, 2006

Constante de Kaprekar

UPDATE: Creo que no explique nada de lo que es la constante de Kaprecar. Bueno esto ya lo hicieron en otros blogs espero que lo lean antes de leer el resto de este post.

Después de leer sobre la constante de Kaprekar en algunos blogs, me decidí a hacer un programa que me ayudara a hacer el cálculo para números con mas de 4 dígitos. Para no hacer el cuento largo aquí pongo algunos resultados que me dio el programa.

Para 3 dígitos:
987 - 789 = 198
981 - 189 = 792
972 - 279 = 693
963 - 369 = 594
954 - 459 = 495
Constante 495

Pero probé con otros números al azar en su mayoría me dio la misma constante hasta que llegue por casualidad al numero 788 con el cual me entrega este resultado:
887 - 788 = 99
99 - 99 = 0

Con números de 4 dígitos siempre me dio la misma constante que es la que manejan los demás sitios (6174) por lo tanto no pongo los resultados

Con números de 6 dígitos en algún momento me dio como resultado este ciclo:
886320 - 23688 = 862632
866322 - 223668 = 642654
665442 - 244566 = 420876
876420 - 24678 = 851742
875421 - 124578 = 750843
875430 - 34578 = 840852
885420 - 24588 = 860832

Con números de 8, 9 y 10 dígitos también me dio ciclos
De 8 dígitos:
86654430 - 3445668 = 83208762
88763220 - 2236788 = 86526432
86654322 - 22345668 = 64308654

De 9 dígitos:
986554332 - 233455689 = 753098643
987654330 - 33456789 = 954197541
997554411 - 114455799 = 883098612
988863210 - 12368889 = 976494321
997644321 - 123446799 = 874197522
987754221 - 122457789 = 865296432
986654322 - 223456689 = 763197633
977663331 - 133366779 = 844296552
986554422 - 224455689 = 762098733
987763320 - 23367789 = 964395531
996554331 - 133455699 = 863098632
988663320 - 23366889 = 965296431
996654321 - 123456699 = 873197622
987763221 - 122367789 = 865395432

De 10 dígitos:
8866543320 - 233456688 = 8633086632
8866633320 - 233366688 = 8633266632
8666633322 - 2233366668 = 6433266654
6666544332 - 2334456666 = 4332087666
8766643320 - 233466678 = 8533176642
8766543321 - 1233456678 = 7533086643
8766543330 - 333456678 = 8433086652

Por lo tanto realmente no creo que sea un ciclo para todos los casos, seguramente pueden haber números con los cuales no se cumple lo de la constante como es el caso de los de 3 dígitos.

Tomando en cuenta el resultado que me dio el programa con números de 6 o más dígitos. Tampoco puedo decir que sea una constante ya que varía siempre en mayor o menor medida.

Para los que les interese más de este tema encontré un blog dedicado a las series de Kaprekar y un programa en java que trabaja con esas series.

El primer lugar donde vi lo de las series de Kaprekar fue: ... hmmm ...

El código de mi programita, aunque no esta optimizado (Se termina cuando ejecuta el ciclo 100000 veces, no detecta cuando detenerse) pueden pedirlo a mi correo o dejar un comentario con su dirección solicitando el programa.

martes, marzo 07, 2006

Digital fortress

En el libro de Digital fortress de Dan Brown se habla de un código nuevo que tiene el nombre del libro el cual muta con el paso del tiempo. Será que realmente exista??

Según los libros que he leído sobre encriptación que hay varios tipos de algoritmos de encriptación, entre ellos los que son reversibles y los que no.
Entre los reversibles se encuentran muchos algoritmos, entre ellos los que tienen una sola llave (que no son recomendados porque son fáciles de decifrar) y los que manejan una llave publica como una privada.

En el libro se mencionan sobre todo los algoritmos mas seguros, que hasta ahorita son los que utilizan llaves publicas y privadas.
Con las llaves publicas se encripta un mensaje (usando cualquier algoritmo) y con las privadas se desencripta.

Bueno para no hacer el cuento largo, todos los algoritmos generan un texto con caracteres "raros", los cuales solo pueden ser leidos con la llave privada y el uso del algoritmo con el cual se codificó.

En teoría para decifrar un código de estos usando la fuerza bruta, como regularmente se le dice a hacer prueba y error con cada una de las convinaciones posibles de texto. tardaria años para una maquina común y corriente desifrar uno de estos códigos, y si tienes muchas maquinas con muchos procesadores cada una se puede reducir el tiempo a meses o menos. Todas probando diferentes algoritmos con todas y cada una de las convinaciones posibles de texto. Y lo peor de todo es que hay "rumores" de que hay agencias dedicadas a hacer este tipo de cosas desde hace 10, 20, 30 años, y empezó a tener más auge desde que mas y mas personas accesamos al internet y tenemos muchos mas métodos de comunicarnos en linea. Pero bueno eso ya entra en otro tema.

Lo que se me hace raro es que siempre se guarda el texto y no se muta. Con los algoritmos conocidos hasta ahorita si se muta el texto el resultado de la decodificación serian caracteres raros sin ningún sentido. La única forma en que se me ocurriría que se pudiera hacer sería que el algoritmo generara un programa que controlara el texto encriptado y que estuviera activo todo el tiempo para que la mutabilidad del texto fuera cada determinado tiempo, porque si no se esta ejecutando el programa, aunque sea en binario o algo así, pero el texto se quedaría estático y de esa forma se podría desencriptar el contenido del mensaje encriptado

Pero definitivamente la persona que logre hacerlo e volvería multi billonaria.

Al terminar de escribir esto me puse a buscar información al respecto y resulta que la computación cuántica puede ser la opción, pero por lo que entendí aun con esa se requieren llaves para poder decifrar la información. El único detalle es que las llaves generadas serían de tamaños extraordinariamente grandes por los cuales se haría virtualmente imposible decifrar la información con aun uniendo muchas computadoras y procesadores.

domingo, marzo 05, 2006

El nuevo netBeans

Estaba checando en la pagina de javaHispano que hicieron un demo del uso del nuevo netBeans, realmente quede impresionado. En el demo muestran como hacer un editor de texto sin tener que programar una sola linea de código, usando los módulos que ya tiene netBeans. Aparte la facilidad con la que se pueden desarrollar las aplicaciones.

Para los que estamos en esta área vale la pena que vean este demo

jueves, marzo 02, 2006

Hace algunos ayeres en Morelia


 Posted by Picasa