我正在尝试在 Python 中制作一个 4x4 数独求解器(我只是一个初学者!)并且在尝试定义一个函数来稍微清理我的代码时,我遇到了一些我不太了解的奇怪行为。显然,这之间是有区别的:
sudoku = "0200140000230040"
sudoku = map(lambda x: '1234' if x=='0' else x, list(sudoku))
for i in range(16):
for j in range(4):
if sudoku[i] == str(j+1):
for k in range(4):
if len(sudoku[i/4*4+k]) > 1:
sudoku[i/4*4+k] = sudoku[i/4*4+k].translate(None, str(j+1))
for k in range(4):
if len(sudoku[4*k+i%4]) > 1:
sudoku[4*k+i%4] = sudoku[4*k+i%4].translate(None, str(j+1))
和这个:
sudoku = "0200140000230040"
def sd(l):
for k in range(4):
if len(sudoku[l]) > 1:
sudoku[l] = sudoku[l].translate(None, str(j+1))
sudoku = map(lambda x: '1234' if x=='0' else x, list(sudoku))
for i in range(16):
for j in range(4):
if sudoku[i] == str(j+1):
sd(i/4*4+k)
sd(4*k+i%4)
奇怪的表达式用于检查行和列(框还没有完成)。如果已经问过这种问题,我非常抱歉浪费您的时间,但请尝试运行两个代码片段并观察您得到的不同结果。提前致谢。
(我有一种奇怪的感觉,我会被大喊大叫。哈。)