Skip to content

Latest commit

 

History

History

Sudoku

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Python sudoku solver

import sys
import time

from sudoku import Sudoku

topic = '''
530070000
600195000
098000060
800060003
400803001
700020006
060000280
000419005
000080079    
'''

map = Sudoku(topic)
print(map)

if not map.check():
    print('No answer')
    sys.exit()

start_time = time.time()
map.search()
end_time = time.time()
print(map)
total_time = end_time - start_time
print(f'Time %.2f s' % total_time)

# also, topic can be a int list
topic = [
    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]

map = Sudoku(topic)
print(map)

Execute result

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

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

Time 0.00 s
    0   1   2   3   4   5   6   7   8
  |---|---|---|---|---|---|---|---|---|
0 | 8 |   |   |   |   |   |   |   |   |
  | - | - | - | - | - | - | - | - | - |
1 |   |   | 3 | 6 |   |   |   |   |   |
  | - | - | - | - | - | - | - | - | - |
2 |   | 7 |   |   | 9 |   | 2 |   |   |
  |---|---|---|---|---|---|---|---|---|
3 |   | 5 |   |   |   | 7 |   |   |   |
  | - | - | - | - | - | - | - | - | - |
4 |   |   |   |   | 4 | 5 | 7 |   |   |
  | - | - | - | - | - | - | - | - | - |
5 |   |   |   | 1 |   |   |   | 3 |   |
  |---|---|---|---|---|---|---|---|---|
6 |   |   | 1 |   |   |   |   | 6 | 8 |
  | - | - | - | - | - | - | - | - | - |
7 |   |   | 8 | 5 |   |   |   | 1 |   |
  | - | - | - | - | - | - | - | - | - |
8 |   | 9 |   |   |   |   | 4 |   |   |
  |---|---|---|---|---|---|---|---|---|