Lacosox Sudoku Solver Adictive Edition

17 junio, 2008 at 13:10

En la sección inferior de un diario salía un cuadro… «Entretenidos problemas de SUDOKU»,  habían 2, uno que decía «Nivel Fácil» y «Nivel Difícil»..

Como a mi me gusta complicarme la vida evidentemente comencé con el «Nivel Difícil», al poco andar ya no podía seguir llenando casillas sin estar seguro de lo que ponía, las dudas comenzaron… y mi capacidad para resolver este tipo de problemas se estaba poniendo en duda….  asi que tomé una desición bastante simple, para evitarme terminar siendo un fracasado preferí hacer el «Nivel Fácil»… a las pocas horas me dí cuenta que era una farza, el nivel fácil no tenía nada de fácil… estaba lleno de trampas y practicamente era imposible de resolver sin usar algún tipo de torpedo…

Fue entonces cuando en un momento de descanzo recordé que tenía un computador a menos de 2 metros de donde estaba sentado,  ¡Por fin podría resolver los problemas!… pero existe un problema.. no tenía conexión a internet que me permitiera buscar algún software para resolver sudokus, no me quedaba que escribir un programa yo mismo…  ¿o aceptar la derrota?, jamás!… (detalle completo después del corte)

 

Para resolver el problema existen varias alternativas, entre ellas:

  • Utilizar fuerza bruta y verificar todas las posibildades hasta encontrar la solución.
  • Seguir un árbol de posibilidades, validando las ramas antes de ejecutarlas. Utilizando la lógica «que pasa si pongo 1 en esta casilla»
  • Utilizar una lógica más humana, utilizando la lógica «¿que número puedo poner en esta casilla?»

La primera alternativa es muy flaite. La tercera alternativa resulta ser una solución más elegante, pero implica algunas horas extra de programación. Apliquemos la segunda alternativa y veamos los tiempos de reacción….

Seguir una lógica de un árbol de posibilidades es bastante simple de implementar, la idea es verificar todos los posibles caminos, que tenemos y cuando encontremos un problema, volveremos al paso donde realizamos la última decisión, con el fin único de tomar otro camino. Tal cual se hace cuando se resuelve un laberinto.

Luego de implementada la lógica era la hora de testear el problema que el diario me planteaba.

sc1

Problema resulto en tan solo 58 milisegundos, es por eso que amo estas máquinas 😀 . El total de iteraciones equivale a la cantidad conbinaciones que intentó antes de encontrar la solución, algo así como 307 posibilidades de caminos erroneos y 1 camino correcto para completar el laberinto.

El programa se detiene al encontrar la primera solución, por lo tanto no se está seguro si en realidad existan más soluciones para el mismo problema. Aunque por lo general con una solución basta.

El programa está escrito en lenguaje Java, y debe ejecutarse en modo texto indicando como parámetro el problema a resolver, simplemete indique las casillas de izquierda a derecha y de arriba hacia abajo, indicado un 0 para las casillas en blanco.

Queda el código fuente disponible para todos quienes quieran estudiarlo, modificarlo, perfeccionarlo y hacerse millonarios con él.

Solo se recomienda que no se utilce mucho, se han notificado casos en que usuarios se vuelven «adictos» a resolver Sudokus con esta herramienta, probablemente al ver que los resultados los entrega tan rápidamente.

ACTUALIZACIÓN: Ahora puedes revisar el código fuente en GitHub o, si aún lo quieres, bajarlo directamente.

LacosoxSudokuSolverAdictiveEdition.tar
Título: LacosoxSudokuSolverAdictiveEdition.tar (0 click)
Leyenda:
Filename: lacosoxsudokusolveradictiveedition-tar.gz
Size: 10 KB

 

Descomposición L/U de una Matriz en Python (Programa anexo)

17 junio, 2008 at 07:05

Descomposición L/U de una Matriz en Python (Programa anexo)Por: KnX.

«Esto es sin duda cierto, es absolutamente paradójico, no podemos comprenderlo y no sabemos lo que significa, pero lo hemos demostrado y, por lo tanto, sabemos que debe ser verdad.» Charles Sanders Peirce

Aparentemente las matemáticas son así, aveces nos es difícil comprenderlas y aunque han estado a nuestro lado toda la vida las ignoramos. Ya ha pasado un tiempo desde que me he alejado parcialmente (no puedes evitarlo, siempre están allí) del mundo matemático para dedicarme en su gran mayoría concretamente a la informática, sin embargo, los 3 años que estube dedicado a ella logre adquirir una visión yo diría privilegiada de como se ve la matemática desde un punto de vista matemático y menos calculista. Digo menos calculista porque como muchos se estarán de acuerdo conmigo las matemáticas más que un grupo de números es una forma de pensar.

 

No es mi intención hacer un ensayo de las matemáticas ni mucho menos, concentremonos ahora en el tema en si de este post.

Buscando en mis ficheros no etiquetados me he encontrado con este programa que desarrolle hace un tiempo atrás , se trata de un programa que escribí en Python para descomponer una matriz de números en sus factores LU. ¿Qué?, bueno voy tratar de explicarlo en breves palabras quizá a alguien le es de utilidad.

 

Supongamos una matriz pero que sea cuadrada, vale decir el mismo numero de filas y de columnas escribamos esta matriz como producto de dos matrices las que llamaremos L y U respectivamente (ya explicaré más abajo porque se eligió estos nombres) entonces:…………………………………

(Bajar PDF para seguir leyendo)

abajo dejo el programa y el pdf con su source.

DescomponeEnLu_By_LacosoX
Título: DescomponeEnLu_By_LacosoX (0 click)
Leyenda:
Filename: descomponeenlu_by_lacosox.zip
Size: 176 KB
LU
Título: LU (0 click)
Leyenda:
Filename: lu.odt
Size: 47 KB
LU
Título: LU (0 click)
Leyenda:
Filename: lu-2.pdf
Size: 103 KB

CiberBingo y Tómbola

17 junio, 2008 at 06:56

CiberBingo y Tómbola

2 Visiones distintas del mismo problema

El problema nació en el verano del 2008, mientras la familia se reunía para jugar un entretenido juego de bingo surge la idea (inicialmente mía creo) de realizar un programa de computadora que realizara la misma función que el sorteo en forma manual. Mientras jugábamos se extraviaron algunos números en la tómbola los cuales no pudieron entrar en el próximo sorteo y fueron reemplazados por unos momentaneos de papel, obviamente los cuales no produjeron el mismo efecto de ahí la necesidad de digitalizar el problema.

Inicialmente la idea era sencilla, desarrollar un programa que simulara el proceso. Cantidad de programadores disponibles 2 con lo cual un pensamiento lógico llevaría a dividir las tareas para el desarrollo, sin embargo luego de varias conversaciones sin llegar a un acuerdo cada programador decide actuar por su lado y comienza a crearse un especie de competencia por quién desarrolla primero el programa y de mejor forma.

A continuación una descripción formal del problema, resultado obtenido y una pequeña comparación entre las aplicaciones , decida usted cuál es la mejor.

Objetivo: Crear aplicación en Java que implemente el juego típico de Bingo, emulando una tómbola, bolas, un medio para saber la bola sorteada, el cartón del jugador y todos los elementos típicos de un Bingo.

Especificaciones: El sorteo de las bolas debe ser totalmente aleatorio.

 

Comparación Básica entre las aplicaciones

CiberBingo Tómbola
Librerias gráficas utilizada Swing Swing
Visor de última bola Si Si
Orientación a objetos Si Si
Nivel de Oreintación a objetos (si aplica) 3 Clases 6 C lases
Funcionalidades Disponibles Sortear

Nuevo Juego

Guardar Partida

Recuperar Partida

Sortear Automáticamente

Cantador Virtual (Idea Original)

Sortear

Sortear automaticamente

Predicción de ganador

Mostrar/Ocultar Log

Mostrar última bola sorteada

Mostrar panel bolitas

Cantador Virtual

Configurar Colores

Función de aleatoridad Math.random()*76; Math.random()*100;
Orden de código Buena Regular
Simplicidad de código Regular Buena
Cantidad de formularios utilizados 2 3
IDE Utilizado NetBeans 6 NetBeans 5.0
Licencia GPL GPL

 

Ventajas comparativas según cada programador

Tómbola (GPL)
“La principal ventaja de tómbola es la buena interacción con el usuario y capacidad de configurar casi todo. Además el diseño es fácilmente adaptable a ser utilizado por otra aplicación.”

CiberBingo(?)
“ …………………………….”

Resultado final (decida usted)

ciberBingo

tombola

Actualización: Entre uno de los tantos movimientos que ha tenido este sitio, hemos perdido el codigo fuente de ciberbingo 1.0 ; Prometemos volver a ponerlo aquí si es que algún nos topamos con algún backup del mismo.

 

Proyecto_Tombola
Título: Proyecto_Tombola (0 click)
Leyenda:
Filename: proyecto_tombola.zip
Size: 3 MB

Memoricen, juegen y aburranse

10 junio, 2008 at 04:41

Lacosox presenta el último gran avance de la tecnología. si, por que nuestro deber es mantenernos al día soxeando lo más que podamos, para que de esta forma la gente que no tenga vida pueda pueda perderla jugando, y personalizando nada más y nada menos que el famoso memorice.
memorice1

No comenten que está feo, ya lo hemos notado. Queda totalmente disponible el programa ejecutable del juego y su código fuente correspondiente, esperamos que pueda ser de utilidad a algún estudiante principiante de la tecnología java. Está demás mencionar que para poder jugarlo necesitan tener instalada la máquina virtual de java ( la pueden descargar de http://www.java.com)

 

Actualización: el código fuente no tenía todas las imágenes necesarias para una correcta ejecución, ahora se las hemos agregado, en todo caso se podían obtener desde el otro archivo a descargar.

memorice.tar
Título: memorice.tar (0 click)
Leyenda:
Filename: memorice-tar.gz
Size: 84 KB
memorice_src_img_fix.tar
Título: memorice_src_img_fix.tar (0 click)
Leyenda:
Filename: memorice_src_img_fix-tar.gz
Size: 118 KB

 

Manual de referencias para el Usuario Zimbra ZCS 4.0.2 en español

30 mayo, 2008 at 01:55

Hemos liberado desde nuestra bodega de cachureos la versión Lacosox del Manual de usuario para Zimbra 4.0.2 en español.

manual
Cuando
se lanzó la versión ZCS 4.0.2 de Zimbra, existía un pequeño problema, la ayuda para el usuario estaba totalmente en inglés y por lo tanto se veía complicado implementar este sistema en organizaciones donde el nivel de los usuarios requería una total documentación, ayuda e interfaces en español.


Cuando
vimos ese problema nos dedicamos a buscar alguna traducción del manual de usuario original, pasaron los días y no encontramos nada… Finalmente no nos quedó otra que fabricar nuestra propia versión del manual de usuario. Y ahora la dejamos disponible para todos ustedes.

Este es un manual para el usuario final, similar a la ayuda que trae zimbra, pero en español, y que esperamos que sea de mucha utilidad para aquellas instituciones y/o administradores de sistemas que implementan este sistema de correos.

Sabemos que le será de utilidad, especialmente cuando los usuarios no poseen mayores conocimientos de  inglés y/o su tiempo es limitado para aprender a usar la plataforma en forma autónoma.

Disfrútalo y esperamos tus comentarios.

ManualUsuarioZimbraVersionZCS402_0
Título: ManualUsuarioZimbraVersionZCS402_0 (0 click)
Leyenda:
Filename: manualusuariozimbraversionzcs402_0.pdf
Size: 5 MB