Un solucionador de sudoku en c

Un Sundoku Solver en C es un programa de Linux basado en la consola, escrito en lenguaje C, que resuelve SU DOKU Puzzles usando lógica deductiva.
Descargar ahora

Un solucionador de sudoku en c Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • GPL
  • Precio:
  • FREE
  • Nombre del editor:
  • Bill DuPree
  • Sitio web del editor:
  • http://www.techfinesse.com/sshutout/sshutout.html

Un solucionador de sudoku en c Etiquetas


Un solucionador de sudoku en c Descripción

Un Sundoku Solvante en C es un programa Linux basado en la consola, escrito en lenguaje C, que resuelve sus rompecabezas de Doku usando lógica deductiva. Un Sudoku Solver en C es un programa de Linux basada en consola, escrito en lenguaje C, que resuelve Su Doku rompecabezas usando la lógica deductiva. Sólo se recurrirá a prueba y error y retroceso se acerca al agotar sus moves.Puzzles deductivos debe ser de la variedad estándar de 9x9 utilizando los caracteres (ASCII) 1 a 9 para los símbolos del rompecabezas. Rompecabezas deben presentarse como 81 cadenas de caracteres que, cuando se lee de izquierda a derecha va a llenar un 9x9 Sudoku rejilla de izquierda a derecha y de arriba a abajo. En la especificación de puzzle, los caracteres 1 - 9 representan los dados rompecabezas o pistas. Cualquier otro carácter no en blanco representa un algoritmo de resolución de puzzles cell.The sin resolver se cultiva en casa. No prestado cualquiera de las técnicas habituales de la bibliografía, por ejemplo, Donald Knuth de baile "Enlaces". En lugar Rodé mi propia desde cero como un reto personal. Como tal, su rendimiento sólo puede ser atribuido a su servidor. Aún así, creo que es bastante rápido. En una MHz Pentium II 333 Linux caja en la que resuelve los puzzles típicos fuerza media en aproximadamente 800 microsegundos o cerca de 1.200 rompecabezas por segundo, más o menos. En un Athlon XP 3000 que resuelve sobre 6.600 rompecabezas por segundo. (Tiempo de Solución depende grado de dificultad, por lo YMMV.) Descripción del algoritmo: El algoritmo de rompecabezas inicialmente asume cada célula sin resolver puede asumir cada valor posible. A continuación, utiliza la colocación de los dados para refinar las opciones disponibles para cada célula. Yo llamo a esto el marcado phase.After marcado se completa, entonces el algoritmo busca células simples con valores que, debido a las limitaciones impuestas por la fila, columna o región 3x3, sólo podrá asumir un valor posible. Una vez que estas células se asignan valores, el algoritmo vuelve a la fase de marcado para aplicar estos cambios a las soluciones candidatas restantes. producen el margen de beneficio / fases singleton alternos hasta que o bien no más cambios, o el rompecabezas se resuelve. Me llamo el margen de beneficio / bucle eliminación Singleton la simple Solver ya que en un gran porcentaje de los casos se resuelve el rompecabezas. Si la porción solucionador sencilla del algoritmo no produce una solución, reglas deductivas luego más avanzadas son applied.I've implementó dos reglas adicionales como parte del solucionador de puzzles deductivo. La primera es la eliminación subconjunto en el que una fila / columna / región se escanea para X número de células con X número de soluciones candidatas a juego. Si se encuentran tales subconjuntos (o tuplas) de la fila, columna o región, entonces los valores candidatos del subconjunto pueden ser eliminados de todas las demás células no resueltos dentro de la fila, columna o región, respectivamente.El regla siguiente deductivo examina cada región en busca de valores candidatos que se alinean exclusivamente a sí mismos a lo largo de una única fila o columna, es decir, un vector. Si se encuentran tales valores candidatos, entonces ellos pueden ser eliminados de la células fuera de la región que forman parte de la fila alineada o column.Note que cada una de las reglas deductivas avanzada llama todas las reglas precedentes, con el fin, si esa regla avanzada tiene efectuado un cambio en el rompecabezas markup.Finally, si no hay solución se encuentra después de la aplicación iterativa de todas las reglas deductivas, entonces empezamos por ensayo y error utilizando la recursividad para dar marcha atrás. Una copia de trabajo se crea a partir de nuestro rompecabezas, y utilizar esta copia se elige la primera célula con el menor número de soluciones candidatas. Uno de los valores soluciones se asigna a dicha célula, y el algoritmo solver se llama el uso de esta copia de trabajo como punto de partida. Con el tiempo, ya sea una solución, o un callejón sin salida es reached.If se llega a un punto muerto, la recursividad se desenrolla y la siguiente solución de prueba que se intente. Si se encuentra una solución (en cualquier punto) los valores para la solución se añaden a una lista. Una vez más, siempre y cuando estamos examinando todas las posibilidades, la recursividad se desenrolla de manera que el siguiente ensayo se puede intentar. Es de esta manera que enumeramos los rompecabezas con múltiples solutions.Note que sin duda es posible añadir a la lista de reglas aplicadas deductivos. Las técnicas conocidas como "X-Wing" y "Swordfish" vienen a la mente. Por otro lado, la adición de estas reglas adicionales será, con toda probabilidad, ralentizar el solucionador por aumentar la carga computacional mientras que produce muy pocos resultados. He visto la ley de los rendimientos decrecientes, incluso en algunas de las reglas existentes, por ejemplo, en la eliminación subconjunto sólo miro a los dos y tres subconjuntos valorados porque tomarlo más allá de Nueva performance.What que degrada en esta versión: · marcado y reglas de evaluación han sido re-factorizado por la minuciosidad y eficiencia · El motor solucionador ha sido empaquetado. como un módulo de objeto reutilizable. · El sistema de puntuación rompecabezas ha sido mejorada, y un error que bifurcación temprana causada era fijo.


Un solucionador de sudoku en c Software relacionado

Mekhangar

Mekhangar es una colección de herramientas para crear, editar y administrar unidades para BattleTech, un juego de placas de ciencia ficción para 2 jugadores. ...

182

Descargar

Lskat

LSKAT (Lieutnant Skat) es un juego de cartas divertido y atractivo para dos jugadores. ...

133

Descargar