решить данную сложную задачу. Сам не справляюсь. идея следующая: должны быть функции для проверки заполнение таблицы судоку. нужна функция, которая для каждой ещё не заполненные ячейки проверяет. Какие значения туда можно подставить также нужно. Дописать функции менеджера, которая проверяет корректность заполнения судоку.
Следующее сначала функция проходи, по всем клеткам судоку не заполненным и в какую-нибудь из клеток, в которой наименьшее количество вариантов можно подставить запускает саму себя же, по-моему со всеми вариантами, А дальше идёт по рекурсии, соответственно, все варианты, которые не подходят, они отсекаются функции, ничего не вызывают. все варианты, которые подходят они запускают в следующую итерацию новые функции, которые уже пытается подставлять в другие ячейки
Желательно не переименовывать данные. Если есть какие-то вопросы задавайте.
def print_sudoku(sudoku_data):
print(' ')
print(f'| {sudoku_data[0][0]} {sudoku_data[0][1]} | {sudoku_data[0][2]} {sudoku_data[0][3]} |')
print(f'| {sudoku_data[1][0]} {sudoku_data[1][1]} | {sudoku_data[1][2]} {sudoku_data[1][3]} |')
print(' ')
print(f'| {sudoku_data[2][0]} {sudoku_data[2][1]} | {sudoku_data[2][2]} {sudoku_data[2][3]} |')
print(f'| {sudoku_data[3][0]} {sudoku_data[3][1]} | {sudoku_data[3][2]} {sudoku_data[3][3]} |')
print(' ')

def check_unique_cells(cells_filled, cells):
is_not_filled = True
if cells_filled == 4:
is_not_filled = False
if cells_filled == len(set(cells)) - 1 * is_not_filled:
return True
return False

def check_rows(sudoku_data):
for row in sudoku_data:
cells_filled = 0
for cell in row:
if cell != 'X':
cells_filled += 1
if not check_unique_cells(cells_filled, row):
return False
return True

def check_columns(sudoku_data):
for i in range(len(sudoku_data)):
cells_filled = 0
column = []
for j in range(len(sudoku_data)):
if sudoku_data[j][i] != 'X':
cells_filled += 1
column. append(sudoku_data[j][i])
if not check_unique_cells(cells_filled, column):
return False
return True

def check_squares(sudoku_data):
indexes = [[0, 0], [2, 0], [0, 2], [2, 2]]
deltas = [[0, 0], [1, 0], [0, 1], [1, 1]]
for index in indexes:
cells_filled = 0
square = []
for delta in deltas:
if sudoku_data[index[0] + delta[0]][index[1] + delta[1]] != 'X':
cells_filled += 1
square. append(sudoku_data[index[0] + delta[0]][index[1] + delta[1]])
if not check_unique_cells(cells_filled, square):
return False
return True

def check_sudoku(sudoku_data):
if check_rows(sudoku_data) and check_columns(sudoku_data) and check_squares(sudoku_data):
return True
return False

if __name__ == '__main__':
sudoku_data = [['2', '3', '4', 'X'], ['X', 'X', 'X', '1'], ['X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X']]
print_sudoku(sudoku_data)
print(check_sudoku(sudoku_data))

Школьник5432467   ·   10.08.2022 06:50
Ответов: 3 Показать ответы 2 Обсудить

Другие вопросы по Информатике

Даны натуральные числа от 20 до 50. напечатать те из них которые делятся на 3. (программа паскаль)...
Информатика
01.03.2019 22:30
2 ответ(ов)
Написать программу которая решает уравнение x2+c=0 относительно x для любого числа с ....
Информатика
03.03.2019 10:10
2 ответ(ов)
Скратким ответом. записать адрес файла program.exe, хранящегося на компьюторе,зарегистрированном в домене верхнего уровня ru,домене второго уровня schools и имеющем собственное имя...
Информатика
03.03.2019 18:50
3 ответ(ов)
Надо написать программу которая сравнивает два числа, введенных с клавиатуры. программа должна указать, какое число больше или если числа равны вывести соответствующие сообщение. н...
Информатика
03.03.2019 21:50
4 ответ(ов)
Составь предложения со словами-кванторами: все, не все, никакие...
Информатика
04.03.2019 05:50
4 ответ(ов)
Объясните по подробнее как решать такие 1)для какого из указанных значений числа x истинно высказывание ((x < 5)→(x < 3)) ù ((x < 2)→(x < 1)) 1) 1 2) 2 3) 3 4) 4 2...
Информатика
10.03.2019 00:10
3 ответ(ов)
Проиллюстрируйте двумя примерами утверждение о том, что: а) человек является творением культуры б) человек является творцом культуры...
Информатика
10.03.2019 05:40
3 ответ(ов)
Массив .найти значение минимальный элемент среди элементов ,стоящих на четных местах...
Информатика
03.03.2019 15:57
3 ответ(ов)
Технический обзор операционной системы общие компоненты её функции ( можно системы windows 7 андроид какой либо версии)...
Информатика
07.03.2019 18:07
2 ответ(ов)
Pascalabc.net, обязательно через массивы, . напишите программу, которая в последовательности натуральных чисел определяет максимальное число, кратное 4. программа получает на вход...
Информатика
10.03.2019 12:38
1 ответ(ов)
Які і можна описати як оптимізаційні...
Информатика
11.03.2019 01:19
1 ответ(ов)
Сгенерировать массив и осуществить замену отрицательных на их квадраты, положительных на - 1....
Информатика
11.03.2019 09:15
Самые популярные сегодня