40 задач на Python. Джеймс Девис
цифр от 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` вызывается с этим ребусом.
– Если найдено решение, оно выводится на экран. Если решение не найдено, выводится сообщение "Решение не найдено."
Описание задачи: Магический квадрат – это квадратная матрица размером (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) присутствуют в матрице.
3. Вычислить сумму первой строки (или любого другого ряда) как эталонную сумму.
4. Проверить, что суммы всех строк, столбцов и диагоналей равны эталонной сумме.
5. Вывести результат проверки.
Пример кода на Python:
```python
def is_magic_square(matrix):
n = len(matrix)
# Проверка, что все числа от 1 до n^2 присутствуют
all_numbers = set(range(1, n*n + 1))
numbers_in_matrix = set(num for row in matrix for num in row)
if all_numbers != numbers_in_matrix:
return False
# Вычисление эталонной суммы
magic_sum = sum(matrix[0])
# Проверка строк
for row in matrix:
if sum(row) != magic_sum:
return False
# Проверка столбцов
for col in range(n):
if sum(matrix[row][col] for row in range(n)) != magic_sum:
return False
# Проверка диагоналей
if sum(matrix[i][i] for i in range(n)) != magic_sum:
return False
if sum(matrix[i][n-i-1] for i in range(n)) != magic_sum:
return False
return True
#