笔记:udacity计算机科学导论- 课程12/8数独正确性判断
incorrect3 = [[1,2,3,4,5],
[2,3,1,5,6],
[4,5,2,1,3],
[3,4,5,2,1],
[5,6,4,3,2]]
incorrect4 = [['a','b','c'],
['b','c','a'],
['c','a','b']]
incorrect5 = [ [1, 1.5],
[1.5, 1]]
ss = [1,2,3,4,5,6,7,8,9]
qq = []
a = 0
b = 1
while b <= 9-len(o):
ss.pop()
b = b + 1
while a < len(o):
for p in o:
if len(p) != len(o):
return False
qq.append(p[a])
for m in ss:
if m not in p or m not in qq:
return False
a = a + 1
qq = []
return True
print check_sudoku(incorrect3)
#>>> False
print check_sudoku(incorrect4)
#>>> False
print check_sudoku(incorrect5)
[2,3,1,5,6],
[4,5,2,1,3],
[3,4,5,2,1],
[5,6,4,3,2]]
incorrect4 = [['a','b','c'],
['b','c','a'],
['c','a','b']]
incorrect5 = [ [1, 1.5],
[1.5, 1]]
课程答案是:
我的答案是:
def check_sudoku(o):ss = [1,2,3,4,5,6,7,8,9]
qq = []
a = 0
b = 1
while b <= 9-len(o):
ss.pop()
b = b + 1
while a < len(o):
for p in o:
if len(p) != len(o):
return False
qq.append(p[a])
for m in ss:
if m not in p or m not in qq:
return False
a = a + 1
qq = []
return True
print check_sudoku(incorrect3)
#>>> False
print check_sudoku(incorrect4)
#>>> False
print check_sudoku(incorrect5)
#>>> False
运行结果一样,我的答案必课程的少了2行,而且,也多了2行判断数组各元素长度的语句。
课程的算法是用循环查找从1-n的数字,在每1行、每1列都只出现1次。
我的算法是建立一个从1-n的数组ss,然后判断数组ss中的每一个元素,在每1行、每1列都有出现。