Я продолжаю свою судоку, но мне нужна ваша помощь. Я заблокирован здесь:Как проверить каждую строку/столбец/область в Sudoku Python
def grid_index(grid, value):
for i, row in enumerate(grid):
for j, cell in enumerate(row):
if cell == value:
return i, j
return -1, -1
def can_fill_cell(sudoku, coords):
row = sudoku[0]
for cell in row:
if cell == value_to_input:
return False
column = [row[0] for row in sudoku]
for cell in column:
if cell == value_to_input:
return False
square = [sudoku[x][y] for x in range(3) for y in range(3)]
for cell in square:
if cell == value_to_input:
return False
return True
def solve_next_unsolved(sudoku):
"""
for x in range(9):
for y in range(9):
coords = x,y
"""
coords = (2,2)
if can_fill_cell(sudoku, coords):
sudoku[coords[0]][coords[1]] = value_to_input
print(sudoku)
Итак, в grid_index, я получаю все координаты ячеек.
В моей функции can_fill_cell я сказал: «Если значение равно значению на вход, разорвать для и выйти функции для возврата ложного и не ввод значения»
У меня есть проблема прямо сейчас , это я не знаю, как проверить все строки, столбцы и области ...
У вас есть идеи, пожалуйста?
Thx, Ravaniss
EDIT: Просто для информации, я получаю мой судоку, как это:
value_to_input = "1"
def import_sudoku():
with open("sudoku.txt") as f:
lines = f.read()
sudoku = [[character for character in line if not character == " "] for line in lines.split("\n")]
return sudoku
sudoku = import_sudoku()
print(sudoku)
Si, прямо сейчас я могу подтвердить:
.2.
.2.
...
, что не для печати результат, поэтому он является ложным, но я могу это сделать:
...
1..
...
.2.
22.
...
например. что мне нужно проверить. Как я могу проверить все это и сделать работу с судоку?
Thx для вашей помощи!
для седловины в молнии (* sudoku): проверка (col) Как я могу изменить это для чего-то более понятного? Я ищу itertools.product для того, чтобы знать, что это. Я не хочу копировать пасту, не зная и не понимая, что она делает. – Ravaniss
@ Ravaniss это очень идиоматический Python. Не уверен, что еще вы ищете. –
Я хочу изменить функцию zip() для чего-то более понятного. zip(), map() и еще одна функция (не имеют имени) не очень классны в использовании. Для понимания – Ravaniss