给定一个数独板的输入,确认当前的填法是否合法。
合法的输入需要满足以下三个条件:
1. 每一行的9个格子中是1-9的9个数字,且没有重复
2. 每一列的9个格子中是1-9的9个数字,且没有重复
3. 9个3*3的小格子中是1-9的9个格子,且没有重复
输入9行字符串,每行9个字符(不包含\r\n),总共81个字符,空着的格子用字符‘X’表示
53XX7XXXX
6XX195XXX
X98XXXX6X
8XXX6XXX3
4XX8X3XX1
7XXX2XXX6
X6XXXX28X
XXX419XX5
XXXX8XX79
合法在输出字符串,“true”
非法则输出字符串,“false”
53XX7XXXX 6XX195XXX X98XXXX6X 8XXX6XXX3 4XX8X3XX1 7XXX2XXX6 X6XXXX28X XXX419XX5 XXXX8XX79
true
tem1 = [None] * 9 #输入 for i in range(9): tem1[i] = list(input()) flag = 1 for i in range(9): for j in range(9): if tem1[i][j] != 'X' and tem1[i].count(j) > 1: flag = 0 if flag == 1: (3239)#做一个转置,然后利用上边的方法判断 tem2 = [[None] * 9 for _ in range(9)] for i in range(9): for j in range(9): tem2[j][i] = tem1[i][j] for i in range(9): for j in range(9): if tem2[i][j] != 'X' and tem2[i].count(j) > 1: flag = 0 #判断3*3的小方块是否满足要求 (3240)#首先将小方块中展开为一列 if flag == 1: tem3 = [] for ii in range(3): for jj in range(3): for iii in range(ii*3, (ii+1)*3): for jjj in range(jj*3, (jj+1)*3): tem3.append(tem1[iii][jjj]) for m in tem3: if m != 'X' and tem3.count(m) > 1: flag = 0 break tem3 = [] if flag == 1: print('true') else: print('false')