a="003020600900305001001806400008102900700000008006708200002609500800203009005010300"
b=[]
def same_row(i,j): return (i/9 == j/9)
def same_col(i,j): return (i-j) % 9 == 0
def same_block(i,j): return (i/27 == j/27 and i%9/3 == j%9/3)
def r(a):
i = a.find('0')
if i == -1:
b.append(a)
return a
excluded_numbers = set()
for j in range(81):
if same_row(i,j) or same_col(i,j) or same_block(i,j):
excluded_numbers.add(a[j])
for m in '123456789':
if m not in excluded_numbers:
return r(a[:i]+m+a[i+1:])
print r(a),b
这是一个数独求解器。它输入带有0和1-9数字的81大小的字符串,并返回不带0的字符串。给定的示例输入一个字符串a
,并且应该返回结果字符串。您可以通过放置exit(a)
而不是return a
和来验证函数是否返回结果b.append(a)
尝试打印递归函数r
返回的结果时,它不返回任何内容。此外,尽管事实是我b
用b.append(a)
它填充了表格,但仍打印了一个空表。
您需要对return
递归调用的值r
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句