ππ§© ΠΠ°Π΄Π°ΡΠ° ΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π»Π°ΡΠΈΠ½ΡΠΊΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ°
Напишите программу, которая проверяет, является ли заданная квадратная матрица латинским квадратом. Латинский квадрат – это квадратная матрица размером 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')
Материалы по теме
- 0 views
- 0 Comment
Π‘Π²Π΅ΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ