domingo, 31 de agosto de 2014
Proyecto programacion: fin del proyecto y resultados
sábado, 30 de agosto de 2014
Proyecto programacion: explicacion del algoritmo
Pues empezamos. Prefiero empezar de mayor a menor, porque es mas sencillo. El numero de combinaciones original es de 1024, lo que son bastantes.
Empezamos a mirar, cogemos el primer numero, 10. No suma 20, asi que necesitamos mas numeros en el conjunto, entonces sumamos el siguiente numero. Tenemos 10+9, que suma 19 y sigue siendo inferior a 20. Tenemos que seguir probando, por tanto. Sumamos ahora el 8 y nos encontramos que 10+9+8 suman 27. No suma 20 tampoco. Pero si sumasemos mas, todavia nos alejariamos aun mas del numero objetivo, el 20. Podemos por tanto descartar todas las sumas que incluyan 10+9+8, porque siempre superaran 20.
Volvemos atras. El 10+9 era un paso correcto, podemos seguir intentando con el siguiente numero, el 8. No me extendere, sino que lo pondre en la siguiente tabla.
10: NO LLEGA A 20. Continuamos.
10+9 = 19: NO LLEGA A 20. Continuamos.
10+9+8 = 27: SE PASA. No continuamos agregando mas numeros.
10+9+7 = 26: SE PASA. No continuamos.
10+9+6 = 25: SE PASA. No continuamos.
10+9+5 = 24: SE PASA. No continuamos.
10+9+4 = 23: SE PASA. No continuamos.
10+9+3 = 22: SE PASA. No continuamos.
10+9+2 = 21: SE PASA. No continuamos.
10+9+1 = 20: RESULTADO CORRECTO.
Hemos encontrado uno de los resultados correctos, pero queremos encontrar todos los que sumen 20, asi que seguimos avanzando. Intentamos continuar, pero como hemos descartado todas las combinaciones con el 9 al no haber numeros menores que el 1, pasamos al 8.
10+8 = 18: NO LLEGA.
10+8+7 = 25: SE PASA. No continuamos.
10+8+6 = 24: SE PASA. No continuamos.
10+8+5 = 23: SE PASA. No continuamos.
10+8+4 = 22: SE PASA. No continuamos.
10+8+3 = 21: SE PASA. No continuamos.
10+8+2 = 20: RESULTADO CORRECTO.
Despues de este resultado seguimos, y lo hacemos usando el siguiente elemento de la lista.
10+8+1 = 19. NO LLEGA.
Hemos vuelto a llegar a un resultado que no nos permite agregar un numero menor que 1 a la suma. Debemos seguir con la siguiente combinacion:
10+7 = 17. NO LLEGA.
10+7+6 = 23. SE PASA. No continuamos.
Podria seguir, pero es tedioso. Como ya imaginais llegaremos al 10+1, y a ese seguira el 9, y a ese el 9+8, y a ese el 9+8+7, y a ese el 9+8+6...
El algoritmo es bastante simple, por tanto.
Cogemos un conjunto de numeros (empezamos por un conjunto vacio). Se le agrega el numero mas alto disponible. Si la suma es inferior al numero buscado, volvemos a agregar el numero mas alto disponible. Si la suma es mayor, descartamos todas las combinaciones que incluyan esos numeros y sustituimos el ultimo numero agregado por el siguiente numero mayor. Si no nos quedan numeros menores, retiramos el ultimo numero añadido y el anterior lo sustituimos por el siguiente numero menor.
Es un galimatias, ya lo se.
En cuanto a las otras preguntas que hice, el numero de combinaciones es el mismo (lo demostrare con el propio programa) en el orden que sea. Eso si, la velocidad a la hora de encontrar resultados validos si cambiara junto con el orden.
Lo siguiente que toca ya es programacion pura y dura. Pero ire explicandola paso a paso.
Mientras tanto, si quereis seguir este experimento desde casa, podeis ir descargando el JDK (Java Development Kit) y el Eclipse desde estas dos paginas: http://www.oracle.com/technetwork/java/javase/downloads/index.html y https://www.eclipse.org/downloads/
Debereis instalar el JDK primero. El Eclipse no requiere instalacion.
viernes, 29 de agosto de 2014
Proyecto programacion: analisis del problema.
Parece que este mes voy a tenerlo muy liado para hacer un post diario, por no decir para desarrollar el proyecto, pero intentare sacar algo de tiempo.
Vamos a analizar el problema a realizar (ahora mismo no puedo realizar una traduccion directa):
Tenemos 26 poblaciones. Cada una tiene un numero de habitantes conocido. Tenemos que juntar varias poblaciones de tal forma que el numero de habitantes sea 100.000.000 exactamente. En esta prueba ademas comprobaremos si existe mas de una combinacion posible.
Hasta aqui vamos bien, podriamos pensar "tenemos un ordenador, el problema se hace probando todas las combinaciones", pero probar 67.108.864 combinaciones es malgastar tiempo y potencia de calculo. ¿Que pasaría si en vez de 26 poblaciones nos hubieran dado 1.000? Vamos a solucionar el problema con cabeza. No es necesario probar todas las combinaciones posibles. Sabemos que si empezamos a sumar y superamos los 100.000.000 no necesitamos seguir sumando y podemos descartar todas las combinaciones que incluyan esos numeros.
Ahi van los enunciados, para que vayais pensando:
1. ¿Como reduciriais el numero de combinaciones posibles?
2. ¿Influiria que los numeros estuvieran ordenados? ¿En que orden es mejor, comenzar por el mayor o por el menor? ¿En el numero de comprobaciones, en la velocidad a la hora de encontrar el primero de los resultados, en las dos o en ninguna?
Me podeis decir en los comentarios lo que pensais, a ver que tal se os da. Dependiendo del tiempo que tenga y de lo que me digais, seguire con los razonamientos o empezare a mostraros como se programaria, o si necesitais mas tiempo os hablare de las herramientas que usare, Java y Eclipse.
Nos vemos, estrujaos un poco el coco. ESPERO COMENTARIOS.
miércoles, 27 de agosto de 2014
Nuevo proyecto: desarrollar y explicar un algoritmo
jueves, 21 de agosto de 2014
Balance de recuperaciones 21/8/2014
Como extra estoy descargando tambien las dos temporadas siguientes de Recorder to randoseru y To love ru.
Mañana dare por terminada la recuperacion de animes.
Lo siguiente que tengo pendiente es la catalogación de todo lo descargado, pero eso sera otro dia.
Actualizo y me despido.
martes, 19 de agosto de 2014
Balance de recuperaciones 19/8/2014
Un saludo.
domingo, 17 de agosto de 2014
Mantenimiento preventivo
En la foto se puede ver la goma elastica de 1.5 cm de ancho (la he estirado para que se vea bien el estado en que esta) que une el hub USB y el disco duro y que los mantiene juntos y los efectos de la luz solar en ella. Estaba tan agrietada en algunos sitios que se podia romper con las manos.
Afortunadamente, tenia otras dos gomas y he podido sustituirla en el momento por una nueva, pero eso llega a saltar, le da en un ojo a alguien y tenemos una desgracia.
Con todo resuelto, me despido. Ya sabeis, si quereis contribuir a los recambios os podeis pasar por la seccion de monetizacion del blog.
viernes, 15 de agosto de 2014
Balance de recuperaciones 15/8/2014
Ya esta actualizado el listado. Un saludo.
lunes, 11 de agosto de 2014
Monetizando
Por tanto, lo que voy a hacer es incluir un programa de afiliados. Seguro que habeis visto algun anuncio de TV en el que dice "trae a un amigo y te haremos un x% de descuento en tu factura". Basicamente es que si adquiris un producto y lo haceis entrando a traves de mi enlace yo me llevo un porcentaje de lo que le corresponde al vendedor como comision.
¿Significa esto que vais a pagar mas por el producto? NO. Vosotros pagais al vendedor el precio que tiene establecido, y luego reparte sus beneficios entre el y yo. Los beneficios son minimos, de todas formas.
De momento teneis enlaces a Amazon y a Pulsed Media (una empresa de seedboxes), aunque espero poder poner alguna otra empresa en breve. Si estais interesados en contratar algun servicio o adquirir algo online, contactad conmigo para ver si tengo algun tipo de enlace de afiliado. En la epoca de vuelta al cole quizas sea buen momento para usar mis enlaces.
Podeis acceder a la pagina de colaboracion en este enlace o a traves de la barra lateral.
Actualizacion: Tambien teneis promociones de Dropbox y Orange. Ire actualizando con mas servicios, especialmente de almacenamiento de archivos.
Otra actualizacion: Amazon me acaba de dar luz verde. Desde ahora, el link esta operativo.
sábado, 9 de agosto de 2014
Otro engendro
Antes que nada, los componentes:
1 cargador portatil de baterias (que consegui con puntos de Travel Club). El mio es rosa, no tenia la opcion de cambiar de color.