3416 - Gen Mat 22

From Bitnami MediaWiki

Cerința

Scrieți un program care citește de la tastatură un număr natural n și construiește o matrice cu 3*n linii și 3*n coloane, împărțită în n*n zone, numerotate de la 1 la n*n, de sus în jos și de la stânga la dreapta. Fiecare zonă ocupă 3 linii și 3 coloane și va conține pe diagonale numărul său de ordine, restul elementelor fiind egale cu 0.

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran matricea construită, câte o linie din matrice pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 20

Exemplu 1

Intrare
2
Ieșire
Datele introduse corespund restricțiilor impuse.
1 0 1 2 0 2
0 1 0 0 2 0
1 0 1 2 0 2
3 0 3 4 0 4
0 3 0 0 4 0


Exemplu 2

Intrare
34
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Explicație

S-a citit n=2 și se construiește o matrice cu 4 zone a câte 3 linii și 3 coloane.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 3416 Gen Mat 22

def validare(nr_linii):

   if nr_linii < 1 or nr_linii > 20:
       raise ValueError
   print("Datele de intrare corespund restrictiilor impuse")


def gen_mat_22(nr_linii):

   nr_linii *= 3
   nr_coloane = nr_linii
   matrice = [[0 for _ in range(nr_coloane)] for _ in range(nr_linii)]
   index_linie = 0
   index_coloana = 0
   valoare = 1
   while index_linie < nr_linii:
       matrice[index_linie][index_coloana] = valoare
       matrice[index_linie][index_coloana + 2] = valoare
       matrice[index_linie + 1][index_coloana + 1] = valoare
       matrice[index_linie + 2][index_coloana] = valoare
       matrice[index_linie + 2][index_coloana + 2] = valoare
       valoare += 1
       index_coloana += 3
       if index_coloana >= nr_coloane:
           index_coloana = 0
           index_linie += 3
   for index_linie in range(nr_linii):
       for index_coloana in range(nr_coloane):
           print(matrice[index_linie][index_coloana], end=" ")
       print()


if __name__ == '__main__':

   try:
       n = int(input("Introduceți n: "))
       validare(n)
       gen_mat_22(n)
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse")

</syntaxhighlight>