Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erelado/py-sudoku
A simple Python program that generates and solves Sudoku board (9x9) puzzles.
https://github.com/erelado/py-sudoku
console-application python-console python3 sudoku sudoku-generator sudoku-solver
Last synced: about 1 month ago
JSON representation
A simple Python program that generates and solves Sudoku board (9x9) puzzles.
- Host: GitHub
- URL: https://github.com/erelado/py-sudoku
- Owner: erelado
- License: mit
- Created: 2021-07-07T00:32:58.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-07-07T00:58:14.000Z (over 3 years ago)
- Last Synced: 2024-10-15T00:06:12.521Z (3 months ago)
- Topics: console-application, python-console, python3, sudoku, sudoku-generator, sudoku-solver
- Language: Python
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# py-sudoku (console)
## 📙 Description
A simple Python program that generates and solves Sudoku board (9x9) puzzles.### 📏 Scope
The goal of the project was to examine Python's basic syntax and provide added educational value.The first part of the project was to create a sudoku board solver.
A sudoku board generator was later added to the project.### 🔗 References
Inspiration taken from:
- [jeffsieu / py-sudoku](https://github.com/jeffsieu/py-sudoku).
- [techwithtim](https://www.youtube.com/watch?v=eqUwSA0xI-s&list=PLzMcBGfZo4-kE3aF6Y0wNBNih7hWRAU2o) / [Sudoku-GUI-Solver](https://github.com/techwithtim/Sudoku-GUI-Solver).\
# 🚩 Usage
### Generating a Sudoku board
```py
from Sudoku import SudokuBoardGenerator, SudokuBoardSolver, print_boardpuzzle = SudokuBoardGenerator() # Generator initializion.
puzzle.generate_unsolved_board(5) # Sudoku board generation (difficulty = 5 attempts).
print_board(puzzle.board) # Printing the result.# Generating a new Sudoku board to solve...
# generated a new board in 1.1324846744537354 seconds# 0 0 3 | 0 5 4 | 2 0 9
# 0 9 1 | 3 0 2 | 4 8 0
# 0 8 4 | 0 9 0 | 0 0 0
# ------|-------|------
# 8 0 6 | 0 0 0 | 0 0 0
# 4 3 0 | 0 0 7 | 0 0 0
# 0 5 9 | 0 2 6 | 0 0 0
# ------|-------|------
# 6 0 5 | 0 0 0 | 3 0 1
# 0 0 0 | 0 1 5 | 0 0 8
# 0 0 0 | 0 0 0 | 0 7 0
```### Solving a Sudoku board
Solving a board that has been pre-generated by the algorithm.
```py
from Sudoku import SudokuBoardGenerator, SudokuBoardSolver, print_board# using the generated "puzzle"
puzzle = SudokuBoardGenerator() # Generator initializion.
puzzle.generate_unsolved_board(5) # Sudoku board generation (difficulty = 5 attempts).solver = SudokuBoardSolver(puzzle.board) # Solver initializion.
solver.solve_board() # Sudoku board solution.
print_board(solver.board) # Printing the result.# Generating a new Sudoku board to solve...
# generated a new board in 1.1324846744537354 seconds# solved in 0.03597092628479004 seconds
# 7 6 3 | 8 5 4 | 2 1 9
# 5 9 1 | 3 7 2 | 4 8 6
# 2 8 4 | 6 9 1 | 7 5 3
# ------|-------|------
# 8 7 6 | 5 3 9 | 1 4 2
# 4 3 2 | 1 8 7 | 9 6 5
# 1 5 9 | 4 2 6 | 8 3 7
# ------|-------|------
# 6 2 5 | 7 4 8 | 3 9 1
# 3 4 7 | 9 1 5 | 6 2 8
# 9 1 8 | 2 6 3 | 5 7 4
```### Importing boards
You can also import Sudoku boards from an outsourcer.
```py
from Sudoku import SudokuBoardGenerator, SudokuBoardSolver, print_board# using "World's hardest sudoku: can you crack it?"
# @ https://www.telegraph.co.uk/news/science/science-news/9359579/Worlds-hardest-sudoku-can-you-crack-it.html
hardest_sudoku = [
[8,0,0,0,0,0,0,0,0],
[0,0,3,6,0,0,0,0,0],
[0,7,0,0,9,0,2,0,0],
[0,5,0,0,0,7,0,0,0],
[0,0,0,0,4,5,7,0,0],
[0,0,0,1,0,0,0,3,0],
[0,0,1,0,0,0,0,6,8],
[0,0,8,5,0,0,0,1,0],
[0,9,0,0,0,0,4,0,0]
]solver = SudokuBoardSolver(hardest_sudoku) # Solver initializion.
solver.solve_board() # Sudoku board solution.
print_board(solver.board) # Printing the result.# solved in 1.8471145629882812 seconds
# 8 1 2 | 7 5 3 | 6 4 9
# 9 4 3 | 6 8 2 | 1 7 5
# 6 7 5 | 4 9 1 | 2 8 3
# ------|-------|------
# 1 5 4 | 2 3 7 | 8 9 6
# 3 6 9 | 8 4 5 | 7 2 1
# 2 8 7 | 1 6 9 | 5 3 4
# ------|-------|------
# 5 2 1 | 9 7 4 | 3 6 8
# 4 3 8 | 5 2 6 | 9 1 7
# 7 9 6 | 3 1 8 | 4 5 2
```