Code:
def allowed(field, number, x, y):
blockx, blocky = 3 * int(x/3), 3 * int(y/3)
return not (number in field[x] or
number in [t[y] for t in field] or
number in [x for t in field[blockx:blockx+3] for x in t[blocky:blocky+3]])
def sudoku(field):
for i, x in enumerate(field):
for j, y in enumerate(x):
if y == 0:
for n in range(1, 10):
if allowed(field, n, i, j):
field[i][j] = n
if soduko(field) != False:
return field
field[i][j] = 0
return False
## Execute some sudoku
field = [[0,0,0,7,0,0,8,0,0],
[0,0,0,0,4,0,0,3,0],
[0,0,0,0,0,9,0,0,1],
[6,0,0,5,0,0,0,0,0],
[0,1,0,0,3,0,0,4,0],
[0,0,5,0,0,1,0,0,7],
[5,0,0,2,0,0,6,0,0],
[0,3,0,0,8,0,0,9,0],
[0,0,7,0,0,0,0,0,2]]
for x in field:
print x
print "+++++++++++++++++++++++++++"
field = sudoku(field)
for x in field:
print x
Lesezeichen