БГ
raw = [...]
sudoku = [
[int(s) if s in "1234567890" else None for s in line]
for line in raw
]
def guess(x, y, sudoku):
numbers = set(range(1,10))
x_axis = set(sudoku[y])
y_axis = {line[x] for line in sudoku}
cube = set(n for (y_,line) in enumerate(sudoku) for (x_, n) in enumerate(line) if x%3==x_%3 and y%3==y%3)
variants = numbers - (x_axis | y_axis | cube)
return variants