0855 - Piramida 2

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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[edit | edit source]

  • 3 ⩽ n ⩽ 101, impar

Exemplu 1[edit | edit source]

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[edit | edit source]

Intrare
2
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 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)

</syntaxhighlight>