domingo, 8 de mayo de 2011

Divisores 1.0 , Solución al proyecto: Informatizar problema matemático de primaria (10 de10)


Bueno , la aplicación ya está conclusa, ahora vamos a documentar la ficha resumen de la documentación  queda así:


  *************************                  ********               *************************



Aplicación para encontrar todos los divisores de un natural


Objeto:

La aplicación pretende dar una solución a la pregunta, encontrada en exámenes de mátemáticas de varios cursos de infantil en el plan LOGSE, “¿Cuáles son todos los divisores de X?” ,siendo X tanto mayor cuanto mayor es el curso.

Noto que, formalmente , piden el conjunto Y perteneciente a los naturales N.
{ Y : ∀ y ∈ Y, Y ∈ N, xMODy=0}

Esto supone que la solución ha de realizarse en dos fases:
  • La primera tendrá por objeto hallar la descomposición factorial de un número 
  • La segunda requerirá combinar cada uno de los factores resultantes de la primera, es decir, hallar los resultados dispares del Conjunto Potencia de Y.
La primera fase suele ser motivo de exámenes de programación avanzada en las carreras de informática y telecomunicaciones.

Versión 1.0

Fecha de publicación
8/Mayo/2011
Forma de publicación
Archivo Jar que interactúa con fichero
de acceso aleatorio.
Lenguaje de implementación
Java
Entorno de producción
Eclipse sobre Ubuntu 10.10 (maverick)
Características equipo de producción
AMD Athlon ™ XP 2000+ , 433,4 MiB
con Sda de 60 GiB sobre sistema de ficheros ext3
Entornos de fase pruebas antes de publicación
  • Entorno del equipo de producción
  • WXP SP3 sobre un P IV , 1024 Mb
Visualización
Aplicación gráfica
Características de esta versión
  • Requiere fichero de primos modificable
    (puede generarlo): primos.dat
  • Los valores introducidos los asocia al tipo int.
  • El valor a estudio x , 1<x<1072497001





Anomalías que pueden producirse
  • Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
    • Solución: Llamar a ejecucion dando más memoria a la JVM (-Xms)
  • Exception class java.lang.StackOverflowError
    (Sólo en linux)
    • Solución: Llamar a ejecución modificando el stack size para cada hilo. (-Xss)

Hostings para descargarla
Publicada en



Además de la entrada de la wikipedia, el siguiente PDF ilustra muy bien el tema de la factorización:  http://www.mediafire.com/?wqe4o8j2t4gr65h



Por supuesto que esto sería una ficha resumen... añadiéndole unas foticos.
Y se puede adjuntar a un book ; por si el ofertante de empleo quiere echarle un ojo.
(Luego llamará ... "!Por el forro los co...!" Pero ,ese es otro tema).


Todo lo enunciado en las anteriores entradas respecto a análisis y diseño se constituiría en documentación además de pruebas y resultados y hasta incluso una ayuda no sea que, el usuario, no sepa que botón pretar. 
Aunque parezca mentira, en informática se documenta !Todo, todo, todo! (sobre todo, cuando de crear se trata .... ya si es para vender ni os cuento).... otra cosa es que se haga.


Vuelvo a repetir que, andar tuneando la JVM es "hilar fino filipino".



Hasta mañana  y !Sed buenos!

Sin perdón (Proyecto: Informatizar un problema matamático de primaria, Divisores, 9de10)

Escribió , Miguel Hernandez , en su Elegía a la muerte de Ramón Sijé:

No perdono a la muerte enamorada,
no perdono a la vida desatenta,
no perdono a la tierra ni a la nada.



Y , es que, así me siento yo ahora.


Google: "Clint Eastwood"


Mirad, desde el viernes llevo dándole con intensidad progresiva a la aplicación. De tal forma que, ayer a las 21:03 pensaba que, ya la tenía conclusa en su versión más primitiva (sin contemplar que el número a tratar por grande excediera el cuadrado de los primos almacenados) y podía colgarla....
Pero me dió por probarla antes para unos cuantos numeros (1,0,2,10,10000 y 360).
Me encontré con que el 360 fallaba. No es que los resultados que arrojaba estuvieran mal, sólo que no eran todos.... faltaba lo concerniente al 3 hasta el 45.
Eso me hizo comprobar el 15 como número a tratar y recoger que me devolvía (1,5 y 15)... !Seguía faltando el 3!.

Con mi lápiz y cuadernico me puse a "tracear" toda la clase 'Numeros'  y cuando llegué a el método 'Descompfact' me dicuenta de que no estaba bien implementado...
En este caso, por defecto, vorazmente factorizaba para el número que primero dividia con resto 0  pero, ya no avanzaba buscando siguientes.
Había hecho una modificación en el dibujo que os presente en su entrada correspondiente (creo era la II), hará unos días.
Asi que a eso de las 22 de anoche estaba repasando el dibujo. !El dibujo expuesto es correcto!
- Paquito, el fallo está en tu implementación de ese método- Me dije.
Y por primera vez , me di cuenta de que la noche anterior, sin dormir, pasaba factura.

Reescribí el código pero continuaba con el mismo fallo... Las ideas no me venían.
Alrededor de las 00:00 de hoy intenté airearme un poco... hablar con alguien, y mientras: a ver qué dilucidaba mi subconsciente..
Ocurrió que de pronto dije:  -Seguro que, este método, está por la red-
Dí  tanto un pdf interesante (que cuando cuelgue la solución os lo anexaré en la documentación)  de posibilidades matemáticas de factorizar, como con una solución implementada en java  supuestamente de la corrección de un examen de ingnieros superiores (no sé si informáticos o de telecomunicaciones , "tanto da") de la Carlos III de Madrid, colgada como fuente en la respuesta de una individua.

Google: "Clint Eastwood"


Eso entre las 00:00 y las 01:00, me dijé.
-Ya está lo copio , modifico que ellos usan arrays (trabajan en memoria) y yo fichero, y solucionado.-
¿Solucionado?
Jajajajajajajaj, pues no.
!Menuda "morcilla" les coló el profesor!. A drede , obviosly.
O eso ... o !Qué tipa más zorrona!.
Así que pensemos que el profesor  , como , antes hacían y ahora aun hacen algunos "tichers", expuso la
"solución" , a ver quien la repasaba en casa y le decía algo.
Porque la otra opción, que también pudiera ser, resultaría muy "tipical Hispanis" y no encajaría en mi mundo lógico-ideal y de sentido común.
El fallo de la implementación expuesta en intenrnet lo veía a las 2:00 de hoy y es que: igual que mi implementación factorizaba en defecto la de internet lo hacía en exceso , añadiendo como factores primos, números que no lo eran.

Habiendo jodido mi código, efectos de la anterior noche de insomnio, por uno que demuestra que, no todo lo colgado en internet es palabra de Dios.

Decidí acostarme , excusarme hoy como entrada y ver cómo podía implementar yo mi algoritmo.
Ya sé, ya sé que yo no soy "Magister" en el "Alma Mater" , pero !Qué coño! , me voy reencontrando y soy "Virgo con pedigrí" , asi qué , estoy dispuesto a defender cada sílaba que comunico. Puesto que soy responsable de ella.

Hace una hora cuando he empezado esto 302 visitas en aun no llega al mes. Y un cmentario anónimo.....
Cómo administrador lo he permitido. No me gusta el anónimato.
Así que, cuando concluya el programa en su versión inicial, refundiré las entradas concernientes a este programa en una y volveré a pensar si permito comentarios anónimos o no.
No es por el comentario que he permitido, sino porque si lo permito, me expongo a " trolls ".

Os indico que lo de Gazpacho no resultó como esperaba.
Tras casi toda la mañana de ayer,  probando,  me dicuenta de que: a diferencia de Visual Studio , no me permitía interrelacionar el código de las clases de mi programa y las interfaces que hice.
O bien no supe. (Pero eso va a mi libritita de pendientes).
Creo que dicha aplicación , no trabaja en java, intuyo que sí en Python  pero, por ahora, de las "culebras" sólo sé lo de los documentales de la 2, la telenovela mejicana de la 1 y alguna pelandrusca que mejor no dar nunca con ella....