Share This
Связаться со мной
Крути в низ
Categories
//🐍🧩 Задача об определении латинского квадрата

🐍🧩 Задача об определении латинского квадрата

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

zadacha ob opredelenii latinskogo kvadrata ebe6755 - 🐍🧩 Задача об определении латинского квадрата

Латинский квадрат – это квадратная матрица размером n x n, каждая строка и каждый столбец которой содержат все числа от 1 до n. В Средние века латинским квадратам приписывались магические свойства: такие таблицы использовались во время проведения оккультных ритуалов. Напишите программу для определения латинского квадрата.

Входные данные:

  • число n – количество строк и столбцов в матрице;
  • n строк, c n чисел в каждой.

Выходные данные:

Программа должна вывести YES, если введенная матрица является латинским квадратом, и NO в обратном случае.

         # Пример ввода: 4 2 3 4 1 3 4 1 2 4 1 2 3 1 2 3 4   Пример вывода: #YES     

Решение

Первый способ– с использованием функции sorted():

         n = int(input()) matrix = [[int(i) for i in input().split()] for _ in range(n)] for i in range(n):     if sorted(matrix[i]) != list(range(1, n + 1)) or sorted([matrix[j][i] for j in range(n)]) != list(range(1, n + 1)):         print('NO')         break else:     print('YES')     

Второй способ – с использованием функции all():

         n = int(input()) square = [[*map(int,input().split()) ] for i in range(n)] a = all([all([c in row for c in range(1,n + 1)]) for row in square]) b = all([all([c in row1 for c in range(1, n + 1)]) for row1 in zip(*square)])  print(('NO','YES')[a and b])      

Третий способ – с использованием транспонирования и множеств:

         n = int(input()) sq_set = set(range(1, n + 1)) square = [] for i in range(n):     square.append(list(map(int, input().split()))) tr_square = list(map(list, zip(*square))) vector_1 = [set(row) == sq_set for row in square] vector_2 = [set(row) == sq_set for row in tr_square] vector = vector_1 + vector_2 if all(vector):     print('YES') else:     print('NO')      

***

Материалы по теме

  • 🐍 Словари в Python: 12 задач для начинающих с решениями
  • 🐍 Python и динамическое программирование на примере задачи о рюкзаке
  • 🐍 Известная задача с потерянным билетом: реализация на Python

  • 5 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close