这是codewars.com上的kata的一部分,其目标是构建一个函数,该函数可以采用数字的9x9 2D数组(嵌套列表),代表数独谜题,并解决它。
我的解决方案通过了其中一个测试但第二个失败了,我无法确切地看到导致此失败的输入。 它提到字符串索引错误发生在这段代码中:
def square_check(row_num, col_num):
r, c = row_num % 3, col_num % 3
rbase, cbase = row_num - r, col_num - c
return [puzzle[rbase+(r+1)%3][cbase+(c+1)%3],
puzzle[rbase+(r+1)%3][cbase+(c+2)%3],
puzzle[rbase+(r+2)%3][cbase+(c+1)%3],
puzzle[rbase+(r+2)%3][cbase+(c+2)%3]]
返回由索引row_num和col_num给出的拼图(9x9数组)的每个未知方块的相应3x3平方中的数字列表。它只查看四个正方形,因为其他四个正在其他地方检查。
据我所知,这里没有字符串可以索引,更不用说产生索引错误了。我索引的唯一东西是9x9数组,但这些数字总是在0到8之间,如果不是,我会期望列表索引错误。我确定这不是模块化算法的问题,因为它在我的编译器中适用于我给出的每个谜题,甚至是例如9x9数组的所有角落都未知的那些。