40 задач на Python - страница 12

Шрифт
Интервал


2. Функция `solve_rebus`:

– Эта функция принимает строку `rebus`, представляющую собой числовой ребус.

– Она начинается с извлечения уникальных букв из ребуса с помощью функции `set` и условия `char.isalpha()`. Таким образом, `unique_chars` содержит все уникальные буквы, встречающиеся в ребусе.

– Затем функция перебирает все возможные перестановки цифр от 0 до 9 с помощью функции `itertools.permutations`, указывая количество цифр, соответствующее количеству уникальных букв в ребусе.

– Для каждой перестановки цифр функция проверяет, что ведущий ноль отсутствует, вызывая `digits_str[0] != '0'`, и что все цифры уникальны, вызывая функцию `are_digits_unique`.

– Если эти условия выполнены, функция заменяет буквы на соответствующие цифры в ребусе с помощью метода `str.translate` и словаря, созданного с помощью `zip`.

– Затем ребус разбивается на левую и правую части с помощью метода `split('=')`.

– После этого проверяется, является ли результат левой части равенства (`eval(left)`) равным результату правой части (`eval(right)`).

– Если это так, то функция возвращает ребус с замененными буквами на цифры. Если не найдено ни одного решения, функция возвращает `None`.

3. Пример использования:

– В примере использования задается ребус `"SEND + MORE = MONEY"`.

– Функция `solve_rebus` вызывается с этим ребусом.

– Если найдено решение, оно выводится на экран. Если решение не найдено, выводится сообщение "Решение не найдено."


2. Магические квадраты

Описание задачи: Магический квадрат – это квадратная матрица размером (n \times n), заполненная числами от 1 до (n^2) таким образом, что суммы чисел в каждой строке, каждом столбце и обеих диагоналях равны.

Ваша задача – написать программу, которая проверяет, является ли данная матрица магическим квадратом.

Формат ввода:

– В первой строке задается одно целое число (n) ((1 leq n leq 100)) – размерность матрицы.

– В следующих (n) строках содержится по (n) целых чисел, разделенных пробелами, – элементы матрицы.

Формат вывода:

– Выведите `YES`, если матрица является магическим квадратом.

– Выведите `NO` в противном случае.

Пример 1:

Ввод:

3

8 1 6

3 5 7

4 9 2

Вывод: YES

Пример 2:

Ввод:

3

2 7 6

9 5 1

4 3 8

Вывод: NO

Пример 3:

Ввод:

2

1 2

3 4

Вывод: NO

Решение:

1. Считать размерность матрицы (n) и её элементы.

2. Проверить, что все числа от 1 до (n^2) присутствуют в матрице.