def quzhi(list_99,i,j):
list_h = list_99[i]
list_s = [list_99[s][j] for s in range(9)]
h3 = int(j/3)
s3 = int(i/3)
list_33 = list_99[3*s3][3*h3:3*h3+3] + list_99[3*s3+1][3*h3:3*h3+3] + list_99[3*s3+2][3*h3:3*h3+3]
set_value = set(list_33+list_s+list_h)
list_quzhi = []
for value in range(1,10):
if value not in set_value:
list_quzhi.append(value)
return list_quzhi
def js99(list_99):
dict_quzhi = {}
for i in range(9): # 第i横行
for j in range(9): # 第j数列
if list_99[i][j] == 0:
list_quzhi = quzhi(list_99, i, j)
if len(list_quzhi) == 0: # 没有可能的取值,返回错误
return False
if len(list_quzhi) == 1: # 只有一个可能取值,必定取这个,赋值后重新返回
list_99[i][j] = list_quzhi[0]
return js99(list_99)
else: # 有多种可能先保存到字典
dict_quzhi[(i, j)] = list_quzhi
else:
if dict_quzhi: # 还有取值的情况随机找可能取值最少的一个点依次赋值返回
min_num = min(dict_quzhi.values())
for key in dict_quzhi.keys():
if dict_quzhi[key] == min_num:
for value in dict_quzhi[key]:
list_99[key[0]][key[1]] = value
if js99(list_99):
return list_99
else:
return list_99
try:
list_99 = []
for n in range(9):
str1 = input()
list_99.append([int(m) for m in str1.split()])
list_99 = js99(list_99)
for i in list_99:
for j in range(9):
if j == 8:
print(i[j])
else:
print(i[j],end=" ")
except:
pass
def quzhi(list_99,i,j):
list_h = list_99[i]
list_s = [list_99[s][j] for s in range(9)]
h3 = int(j/3)
s3 = int(i/3)
list_33 = list_99[3*s3][3*h3:3*h3+3] + list_99[3*s3+1][3*h3:3*h3+3] + list_99[3*s3+2][3*h3:3*h3+3]
set_value = set(list_33+list_s+list_h)
list_quzhi = []
for value in range(1,10):
if value not in set_value:
list_quzhi.append(value)
return list_quzhi
def js99(list_99):
dict_quzhi = {}
for i in range(9): # 第i横行
for j in range(9): # 第j数列
if list_99[i][j] == 0:
list_quzhi = quzhi(list_99, i, j)
if len(list_quzhi) == 0: # 没有可能的取值,返回错误
return False
if len(list_quzhi) == 1: # 只有一个可能取值,必定取这个,赋值后重新返回
list_99[i][j] = list_quzhi[0]
return js99(list_99)
else: # 有多种可能先保存到字典
dict_quzhi[(i, j)] = list_quzhi
else:
if dict_quzhi: # 还有取值的情况随机找可能取值最少的一个点依次赋值返回
min_num = min(dict_quzhi.values())
for key in dict_quzhi.keys():
if dict_quzhi[key] == min_num:
for value in dict_quzhi[key]:
list_99[key[0]][key[1]] = value
if js99(list_99):
return list_99
else:
return list_99
try:
list_99 = []
for n in range(9):
str1 = input()
list_99.append([int(m) for m in str1.split()])
list_99 = js99(list_99)
for i in list_99:
for j in range(9):
if j == 8:
print(i[j])
else:
print(i[j],end=" ")
except:
pass