-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
73 lines (60 loc) · 1.57 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# // micro web framework of python : flask
from distutils.debug import DEBUG
from flask import Flask, render_template, request
n=9
def check(grid, row, col, num):
for x in range(9):
if grid[row][x]==num:
return False
for x in range(9):
if grid[x][col]==num:
return False
str=row - row % 3
stc=col - col % 3
for i in range(3):
for j in range(3):
if grid[str+i][stc+j]==num:
return False
return True
def solve(grid, row, col):
if( row == n-1 and col== n):
return True
if col==n:
row+=1
col=0
if grid[row][col]>0:
return solve(grid, row, col+1)
for num in range(1, n+1, 1):
if check(grid, row, col, num):
grid[row][col]=num
if solve(grid, row, col+1):
return True
grid[row][col]=0
return False
def main(grid):
solve(grid,0,0)
return grid
app = Flask(__name__)
app.config['DEBUG'] = True
grid = [['']*9]*9
@app.route('/')
def index():
return render_template('index.html', board=grid)
@app.route('/solve', methods=['GET','POST'])
def solver():
board = []
if request.method == "POST":
for i in range(0,9,1):
temp = []
for j in range(0,9,1):
path = 'g'+ str(i)+str(j)
if request.form[path]:
val = request.form[path]
temp.append(int(val))
else:
temp.append(0)
board.append(temp)
board=main(board)
return render_template('index.html', board= board)
if __name__ == '__main__':
app.run()