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

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

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

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

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