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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| import random import sys sys.setrecursionlimit(100000)
def get_next(m, x, y): """ 功能:获得下一个空白格在数独中的坐标。 """ for next_y in range(y+1, 9): if m[x][next_y] == 0: return x, next_y for next_x in range(x+1, 9): for next_y in range(0, 9): if m[next_x][next_y] == 0: return next_x, next_y return -1, -1
def value(m, x, y): """ 功能:返回符合"每个横排和竖排以及 九宫格内无相同数字"这个条件的有效值。 """ i, j = x//3, y//3 grid = [m[i*3+r][j*3+c] for r in range(3) for c in range(3)] v = set([x for x in range(1,10)]) - set(grid) - set(m[x]) - \ set(list(zip(*m))[y]) return list(v)
def start_pos(m): """ 功能:返回第一个空白格的位置坐标""" for x in range(9): for y in range(9): if m[x][y] == 0: return x, y return False, False
def try_sudoku(m, x, y): """ 功能:试着填写数独 """ for v in value(m, x, y): m[x][y] = v next_x, next_y = get_next(m, x, y) if next_y == -1: return True else: end = try_sudoku(m, next_x, next_y) if end: return True m[x][y] = 0
def sudoku(m): x, y = start_pos(m) try_sudoku(m, x, y) print(m)
if __name__ == "__main__": m = m = [ [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0] ] sudoku(m) a=[[9, 1, 3, 4, 2, 5, 7, 8, 6], [6, 2, 8, 3, 7, 9, 5, 1, 4], [4, 5, 7, 8, 1, 6, 9, 3, 2], [7, 9, 1, 5, 3, 2, 6, 4, 8], [2, 8, 5, 9, 6, 4, 1, 7, 3], [3, 4, 6, 1, 8, 7, 2, 5, 9], [5, 6, 2, 7, 4, 3, 8, 9, 1], [8, 7, 4, 6, 9, 1, 3, 2, 5], [1, 3, 9, 2, 5, 8, 4, 6, 7]] my_dic= {1:'我', 2:'要',3:'拿',4:'西',5:'湖',6:'论',7:'剑',8:'第',9:'一'} re='' for i in range(9): for j in range(9): print(my_dic[a[i][j]],end='')
'''m = [ [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0] ]'''
|