This Python program reads an n × n square matrix and checks whether the set of elements on the main and secondary diagonals matches the set of border elements.
If they match, it prints "Yes"; otherwise, it prints "No".
def read_matrix(n: int) -> list[list[int]]:
print(f"Enter elements for a {n}×{n} matrix:")
matrix = []
for i in range(n):
row = list(map(int, input(f"Row {i+1}: ").strip().split()))
if len(row) != n:
print("Each row must have exactly n elements.")
exit()
matrix.append(row)
return matrix
def extract_diagonals(matrix: list[list[int]]) -> set[int]:
n = len(matrix)
diag = set()
for i in range(n):
diag.add(matrix[i][i]) # Main diagonal
diag.add(matrix[i][n - 1 - i]) # Secondary diagonal
return diag
def extract_border(matrix: list[list[int]]) -> set[int]:
n = len(matrix)
border = set()
for i in range(n):
for j in range(n):
if i == 0 or i == n - 1 or j == 0 or j == n - 1:
border.add(matrix[i][j])
return border
def compare_sets(diag: set[int], border: set[int]) -> str:
return "Yes" if diag == border else "No"
# Read matrix size
n = int(input("Enter matrix size (n): "))
if n < 2:
print("Matrix must be at least 2×2.")
exit()
# Read and process
mat = read_matrix(n)
diagonal_set = extract_diagonals(mat)
border_set = extract_border(mat)
result = compare_sets(diagonal_set, border_set)
print(f"\nResult: {result}")
Matrix size: 3
Input:
1 2 3
4 5 6
7 8 9
Diagonals: {1, 5, 9, 3, 7}
Border: {1, 2, 3, 4, 6, 7, 8, 9}
Result: No