Sudoku
Exemplo de um pequeno script que resolve Sudokus.
m=[
[0,0,0,0,0,6,0,8,0],
[0,8,0,0,5,0,6,7,0],
[0,0,2,0,0,3,0,5,1],
[1,0,0,2,7,0,0,0,0],
[0,0,7,6,0,8,2,0,0],
[0,0,0,0,1,4,0,0,7],
[5,2,0,4,0,0,7,0,0],
[0,4,3,0,8,0,0,6,0],
[0,9,0,1,0,0,0,0,0]]
def doit():
i,j=pz()
if i==-1:return 1
for n in range(1,10):
if linok(i,j,n) and colok(i,j,n) and quadok(i,j,n):
m[i][j]=n
if doit():return 1
m[i][j]=0
return 0
def linok(i,p,n):
for j in range(9):
if m[i][j]==n:return 0
return 1
def colok(p,j,n):
for i in range(9):
if m[i][j]==n: return 0
return 1
def quadok(i,j,n):
li=(i/3)*3
lj=(j/3)*3
for x in range(li,li+3):
for y in range(lj,lj+3):
if m[x][y]==n: return 0
return 1
def pz():
for i in range(9):
for j in range(9):
if m[i][j]==0:return i,j
return -1,0
for p in m: print p
doit()
print
for p in m: print p