Giter VIP home page Giter VIP logo

sudoku_solver's Introduction

Sudoku Solver

A Sudoku solver with a custom DPLL decision procedure.

Usage

  • ./sudoku_z3_api.py <path_to_grid_file>
  • ./sudoku_z3_smtlib2.py <path_to_grid_file>
  • ./sudoku_dpll.py <path_to_grid_file>

Characteristics of Solvers

  • ./sudoku_z3_api.py: Solver using Z3 API (slow)
  • ./sudoku_z3_smtlib2.py: Solver writting an SMTlib2 file and parsing the output of z3 (fast)
  • ./sudoku_dpll.py: Solver with an embedded DPLL solver written by myself (very fast and not using z3)

Grid Format

Each line represents a value in the initial grid:

  • (i, j, value) were i, j and value are intergers in 1 .. 9

Test Grids

Three grid are available in the directory tests/ to test the different solvers:

Output Examples

  • Solvable grid (0 represents a missing value):
Initial grid:

|2|9|0|3|0|8|0|0|0|
|0|0|6|4|0|0|0|5|0|
|0|0|0|7|0|0|0|9|0|
|0|0|1|0|0|0|0|0|8|
|7|0|0|0|9|0|3|0|0|
|3|0|0|0|0|0|0|0|5|
|0|0|0|0|0|2|0|0|6|
|0|8|0|0|1|0|5|0|0|
|5|2|0|0|8|0|0|0|0|

Solved grid:

|2|9|4|3|5|8|1|6|7|
|1|7|6|4|2|9|8|5|3|
|8|3|5|7|6|1|2|9|4|
|9|5|1|2|4|3|6|7|8|
|7|6|2|8|9|5|3|4|1|
|3|4|8|1|7|6|9|2|5|
|4|1|9|5|3|2|7|8|6|
|6|8|7|9|1|4|5|3|2|
|5|2|3|6|8|7|4|1|9|
  • Unsolvable grid (0 represents a missing value):
Initial grid:

|2|2|0|3|0|8|0|0|0|
|0|0|6|4|0|0|0|5|0|
|0|0|0|7|0|0|0|9|0|
|0|0|1|0|0|0|0|0|8|
|7|0|0|0|9|0|3|0|0|
|3|0|0|0|0|0|0|0|5|
|0|0|0|0|0|2|0|0|6|
|0|8|0|0|1|0|5|0|0|
|5|2|0|0|8|0|0|0|0|

Grid unsolvable!

sudoku_solver's People

Contributors

nicolasamat avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.