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