
Вот пж поскорее помогите на питонеееееееееееее отдаю 35 баллов Секретный замок для сейфа состоит
из 10 расположенных в ряд ячеек, в которые надо вставить игральные кубики. Но дверца сейфа открывается только в том случае, когда в любых трёх соседних ячейках сумма точек на передних гранях кубиков равна 10. Игральный кубик имеет на каждой грани от 1 до 6 точек. Напишите программу определения кода замка сейфа, если 2 любых кубика уже вставлены в две произвольные, но СТОЯЩИЕ РЯДОМ ячейки. Выведите 2 массива: исходный - с двумя заданными ячейками, и массив, определяющий код замка. !!! Никаких методов Питона для работы с массивами, кроме append и len, !!! использовать нельзя.

Ответы на вопрос

a = [0] * 11
fl = False
a[1] = int(input("Первый кубик: "))
a[2] = int(input("Второй кубик: "))
for i in range(3,11):
if (10-a[i-1]-a[i-2]>6) or (10-a[i-1]-a[i-2]<1):
fl = True
else:
a[i] = 10-a[i-1]-a[i-2]
if fl == True:
print("Решений нет")
else:
for i in range(1,11):
print(a[i],end=" ")



Для решения этой задачи, где нужно определить код замка сейфа, при условии, что 2 кубика уже вставлены в две произвольные, но стоящие рядом ячейки, можно воспользоваться перебором всех возможных комбинаций для оставшихся 8 ячеек. Мы будем искать такие комбинации, в которых сумма точек на передних гранях кубиков в трех соседних ячейках равна 10.
Вот код на Python, который решает эту задачу:
python# Функция для определения кода замка сейфа
def find_lock_code(initial_lock, fixed_cells):
# Исходный замок с уже вставленными кубиками
lock = initial_lock.copy()
# Функция для проверки, можно ли вставить кубик в данную ячейку
def can_insert_cube(index, cube):
if lock[index] != 0: # Ячейка уже занята
return False
if index > 0 and lock[index - 1] != 0: # Левая соседняя ячейка занята
return False
if index < len(lock) - 1 and lock[index + 1] != 0: # Правая соседняя ячейка занята
return False
return True
# Функция для проверки, что код замка корректный
def is_valid_lock(lock):
for i in range(2, len(lock)):
if lock[i - 2] + lock[i - 1] + lock[i] != 10:
return False
return True
# Вставляем кубики в оставшиеся пустые ячейки
def insert_cubes(lock, fixed_cells, index=0):
if index == len(lock):
if is_valid_lock(lock):
return lock
return None
if index in fixed_cells:
return insert_cubes(lock, fixed_cells, index + 1)
for cube in range(1, 7):
if can_insert_cube(index, cube):
lock[index] = cube
result = insert_cubes(lock, fixed_cells, index + 1)
if result:
return result
lock[index] = 0
return None
# Начинаем поиск с вставки в первую свободную ячейку
result = insert_cubes(lock, fixed_cells)
return result
# Исходный замок с уже вставленными кубиками
initial_lock = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# Ячейки, в которых уже вставлены кубики (например, 3 и 4)
fixed_cells = [3, 4]
# Поиск кода замка сейфа
lock_code = find_lock_code(initial_lock, fixed_cells)
# Вывод результатов
print("Исходный замок с уже вставленными кубиками:", initial_lock)
print("Код замка сейфа:", lock_code)
Вы можете изменить значения fixed_cells
для указания двух ячеек, в которых уже вставлены кубики. Код найдет код замка с учетом этих двух ячеек и выведет результат.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili