内容 :
數獨是一種源自18世紀末的瑞士數學家歐拉(Leonhard Euler)所創造的拉丁方塊游戲。在9格寬×9格高的大九宮格中有9個3格寬×3格高的小九宮格,已經有一些數字在裡面了(但並非一定採用數字,例如採用字母a,b,c...),根據這些數字,運用你的邏輯和推理,在其他的空格上填入1到9的數字,但是要注意了,每個數字在每個小九宮格內不能重複,每個數字在每行、每列也不能出現一樣的數字。 這種遊戲只需要邏輯思維能力,與數字運算無關。雖然玩法簡單,但數字排列方式卻千變萬化,所以不少教育者認為數獨是鍛鍊腦筋的好方法。
現在我們可以用程式來判斷一個九宮格數字是不是一個數獨的正解。
输入说明 :
輸入的每一組測試資料均為 9 × 9 的矩陣,且全部為 1~9 的數字,每兩組九宮格之間以一空行作為分隔输出说明 :
yes or noPython:
while True :
print('开始输入数独')
m = [[0 for x in range(9)] for y in range(9)]
x = 0
y = 0
while x < 9 :
print('第{0}行'.format(x + 1))
while y < 9 :
a = input()
try :
int(a)
except :
print('不是整数哦')
else :
a = int(a)
if 0 < a < 10 :
m[x][y] = a
y += 1
else :
print('数字格式不符')
y = 0
x += 1
for x in range(9) :
print(m[x])
test = [0 for x in range(9)]
flag = 0
for y in range(9) :
if flag == 1 : break
for x in range(9) :
test[x] = m[y][x]
test.sort()
for z in range(9) :
if not test[z] == z + 1 :
print('NO1')
flag = 1
break
else :
for v in range(3) :
if flag == 1 : break
for x in range(3) :
if flag == 1 : break
u = 0
for y in range(3) :
for z in range(3) :
test[u] = m[z + 3 * x][y + 3 * v]
u += 1
test.sort()
for t in range(9) :
if not test[t] == t + 1 :
print(test)
print('NO2')
flag = 1
break
else :
print('YES')