0286 - Chenare

De la Universitas MediaWiki

Cerința

Se dă un număr natural n. Construiţi o matrice pătratică de dimensiune n, în care elementele fiecărui chenar sunt egale cu numărul de ordine al chenarului.

Chenarele sunt numerotate dinspre exterior spre interior, începând cu 1.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul afișează pe ecran elementele matricei, câte o linie a matricei pe o linie a ecranului, elementele fiecărei linii find separate printr-un spaţiu.

Restricții și precizări

  • 1 ⩽ n ⩽ 50

Exemplu 1

Intrare
5
Ieșire
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1


Exemplu 2

Intrare
0
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare

#0286 - Chenare
def generate_matrix(n):
    matrix = [[0] * n for _ in range(n)]

    for i in range(n):
        for j in range(n):
            # Determinăm distanța față de margine
            distance_to_border = min(i, j, n - i - 1, n - j - 1)

            # Calculăm numărul chenarului și il adăugăm în matrice
            matrix[i][j] = distance_to_border + 1

    return matrix

def print_matrix(matrix):
    for row in matrix:
        print(" ".join(map(str, row)))

if __name__ == "__main__":
    n = int(input("Introduceți n: "))

    if 1 <= n <= 50:
        result_matrix = generate_matrix(n)
        print_matrix(result_matrix)
    else:
        print("Nu au fost respectate cerintele impuse.")