40 задач на Python. Джеймс Девис. Читать онлайн. Newlib. NEWLIB.NET

Автор: Джеймс Девис
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2024
isbn:
Скачать книгу
цифр от 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) присутствуют в матрице.

      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

      #