Programa para resolver Sudokus

Sudokus, querí­a que fuese rápido, portable a otro sistema operartivo (pero como queria que fuese rápido no podí­a usar Java) y fácil de programar. Por lo que programé un programa que resuelve Sudokus utilizando las librerí­as de Gtkmm, ya que la misma funciona bajo Linux y Windows (no probé mac), tiene buena documentación, fácil de aprender y esta hecha con C++ (me gusta mas que C). El programa logra resolver los Sudokus pero tarda tiempo en resolverlos dependiendo de la dificultad (algunos son instantáneos), y el único problema que he visto, es que con los que son muuuy difí­ciles se tarda un buen rato y consume todo el procesador. Si lo compilan con optimizaciones para el procesador que poseen actualmente, notaran gran mejora en la velocidad, por lo que se los recomiendo (los binarios que distribuyo no estan optimizados para un procesador especifico).

GUI del Sudoku

Se los doy bajo licencia GPL y me gustarí­a que me contactaran si encuentran una forma de mejorar el algoritmo, corrección de un error, o algo por estilo. Si no, me pueden enviar el código/parche para mejorar el programa.

Espero que les guste y no abusen de él, está comprobado que resolver Sudokus ayuda a mejorar la memoria, capacidad de pensamiento y velocidad del mismo. Pues con este programa pretendo a ayudarlos mas no a utilizarlo como sustituto total de tu cerebro para la resolución del Sudoku.

En el archivo de descarga (usuarios de Windows abrirlo con 7z ó Winrar si tienen la licencia) encontrarán los binarios / ejecutables, archivos de ayuda para compilación, fuentes, archivo del programa para que en windows lo abran con Dev-Cpp, el archivo para que en linux abran el proyecto con Anjuta, archivo Glade para el GUI, y el header con las funciones para resolver el Sudoku.

Para descargarlo:
Descargar el programa y sus fuentes
Y para ejecutarlo en Windows, necesita tener las librerí­as Gtkmm para correrlo:
Gtkmmruntime.2.10 (1.4 mb)

15 comentarios

  1. que mas, po ahi tambien ahi uno que trabaja con html no es necesario d instalar y corre en todo SO tanto windows como linux sin ningun otro programa y se puede agregar a las paginas, me intereso porque no consigo quien me enseñe a resolver los sudokus y ya he desifrado un poco

  2. Una Pregunta Miguel,me he topado con algunos sudokus que no tienen solución, así­; que si de alguna manera se le presenta a tu programita dicho ejercicio, como reaccionaria, si has dicho que se puede tardar con los requieren cierta experiencia o grado de dificultad mayorí¢?¦

  3. ¿Y esa GPL es GPL3 o GPL2?

    ¿Esta hecho de tal forma que si tiene 2 procesadores los use en vez de uno? Es decir, ¿es multi-thread?

    ¿Hay forma de usarlo sin necesidad de X system?

    :-) Sólo jodiendo, pero no tanto 😉 hehe.

    BTW, las últimas preguntas es para ver si lo pruebo en un cluster que estoy montando 😛

  4. Para Puntogh: simplemente se tarda en buscar una solucion, pero como no existe termina, y queda el sudoku igual.

    Para ghostbar:
    ¿Y esa GPL es GPL3 o GPL2? GPL2 😉 leee lal icensica jio jio

    ¿Esta hecho de tal forma que si tiene 2 procesadores los use en vez de uno? Es decir, ¿es multi-thread?
    Por ahora no, pero lo pienso migrar ya que no creo que sea dificil, y luego portarlo al ps3.

    ¿Hay forma de usarlo sin necesidad de X system?
    Tengo una versión que funciona sin X, necesita como entrada un archivo de texto con el sudoku parcial.

  5. w00t!!! 😀

    BTW, ese anti-spam apesta, Cuánto suman 0 y 3? CERO?? CEROOOOO!??? (/me siempre habí­a visto anti-spam jodidos, pero este es tan tonto que hasta pudo pasarlo!)

    Parece anti-spam hecho para windowseros x-D

  6. Hmm, Java lento? Esstas seguro? hace cuanto no usas java.
    Tengo benchmarks que prueban que un fibonacci(30) corre mas rapido en Java 1.6 que en C++. Una cosa es consumo de memoria, otra cosa es velocidad de procesamiento, creo que vale la pena investigar un poco sobre los avances y toda la inversion hecha en el JVM, es tecnologia realmente sorprendente.

    Excelente iniciativa para pasar el tiempo, estoy seguro que aprendiste uno que otro truco nuevo haciendo esto.

  7. here’s a comparison of a function with intensive heap usage, which helps simulate simple calculations and calls of functions of functions of functions.

    This is the code in PHP

    gubatron@aria:~$ time php fibo.php
    9227465

    real 0m34.487s
    user 0m34.302s
    sys 0m0.176s

    Takes 34s with PHP5. This is on my AMD Athlon(tm) 64 Processor 3200+ (2Ghz)

    Now this is the code in python

    def fibo(n):
    if n >> I calculate fibonacci of 35
    gubatron@aria:~$ time python fibo.py
    9227465

    real 0m17.738s
    user 0m17.505s
    sys 0m0.108s

    Takes 17.738 seconds, that’s a little bit more than 1/2 the time of PHP execution, that’s pretty good, its almost 100% faster.

    but then when I put these two lines at the beginning of the program

    import psyco
    psyco.full()

    the code gets JIT compiled, and look at the improvement

    gubatron@aria:~$ time python fibo.py
    9227465

    real 0m0.493s
    user 0m0.448s
    sys 0m0.008s

    0.493!!!!

    I ran it again to see if it took a while cause it had to compile, and I got even better results

    gubatron@aria:~$ time python fibo.py
    9227465

    real 0m0.465s
    user 0m0.436s
    sys 0m0.024s

    I decided then to compare against a Java version
    public class Fibo {
    public static int fibo(int n) {
    if (n

  8. gubatron@aria:~$ time java Fibo
    9227465

    real 0m0.194s
    user 0m0.180s
    sys 0m0.004s


    y en C

    gubatron@aria:~$ time ./fibo

    real 0m0.231s
    user 0m0.224s
    sys 0m0.000s

    y en C++

    gubatron@aria:~$ time ./fibo_cpp

    real 0m0.203s
    user 0m0.196s
    sys 0m0.000s

    Java por algun motivo es mas rapido que C y C++ calculando fibonacci, lo cual es intensivo metiendo y sacando del stack.

  9. En mi blog he hecho un reportaje sobre un programa similar a este, sólo que escrito en C y impresionantemente rápido. El link directo al artí­culo es este:
    Programa en C para resolver sudokus. Es código fuente abierto, que lo disfruten!

  10. necesito solucionar el siguiente acertijo con potenciacion, logaritmaion y radicacion
    una finca esta dividida en 7 lotes, cada lote esta formado por 7 cuadrados, en cada cuadrado hay 7 corrales y en cada corral hay 7 vacas. cuantas vacas hay en total.

Deja un comentario