Я пытаюсь сделать решатель судоку 4x4 в Python (я только начинающий!) И, пытаясь определить функцию для некоторой очистки моего кода, я столкнулся с каким-то странным поведением, которое я не совсем понимаю , Видимо, есть разница между этим:
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)
Странные выражения для проверки строк и столбцов (поля еще не закончены). Мне ужасно жаль тратить ваше время, если об этом уже спрашивали, но попробуйте запустить оба фрагмента кода и посмотреть, какие результаты вы получите. Заранее спасибо.
(У меня странное чувство, что на меня будут наорать. Ха.)