0855 - Piramida 2

De la Universitas MediaWiki

Cerința

Gigel a descoperit planul unei piramide magice. Planul este reprezentat sub forma unei matrice pătratice de dimensiune n, unde n este impar, în care elementele nule nu aparțin piramidei, iar elementele nenule reprezintă înălțimea piramidei în punctul respectiv.

Vezi exemplul pentru detalii!

Pentru n dat, construiți o matrice care să reprezinte planul unei piramide magice.

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran elementele matricei construite, câte o linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin exact un spaţiu

Restricții și precizări

  • 3 ⩽ n ⩽ 101, impar

Exemplu 1

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


Exemplu 2

Intrare
2
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare

#0855 - Piramida 2
def is_valid_input(n):
    return 3 <= n <= 101 and n % 2 == 1


def build_pyramid_matrix(n):
    if not is_valid_input(n):
        print("Nu au fost respectate cerintele impuse.")
        return

    pyramid_matrix = [[0] * n for _ in range(n)]

    for i in range(n):
        for j in range(n):
            pyramid_matrix[i][j] = max(abs(n // 2 - i), abs(n // 2 - j))

    return pyramid_matrix


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


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

    pyramid_matrix = build_pyramid_matrix(n)

    if pyramid_matrix:
        print_matrix(pyramid_matrix)