Part of the series

Several example codes

~2 min read • Updated Oct 13, 2025

Program Overview

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".


Python Code:


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}")

Sample Output:


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

Written & researched by Dr. Shahin Siami