3417 - Gen Mat 28

De la Universitas MediaWiki

Cerința

Scrieți un program care citește de la tastatură un număr natural n și construiește o matrice cu n linii și n coloane ale cărei elemente vor primi valori dupa cum urmează:

  • În colțul din stânga sus, de coorodnate 1 1, va fi 1.
  • În pozițiile adiacente, de coordonate 1 2 și 2 1, va fi n.
  • În pozițiile adiacente, de coordonate 1 3, 2 2 și 3 1, va fi 2.
  • În pozițiile adiacente, de coordonate 1 4, 2 3, 3 2 și 4 1, va fi n-1.
  • Și așa mai departe…
  • În penultimele poziții, de coordonate n-1 n și n n-1, va fi n.
  • În ultima poziție, de coordonate n n, va fi 1.

Date de intrare

Programul citește de la tastatură numarul n.

Date de ieșire

Programul afișează pe ecran matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.

Restricții și precizări

  • 3 ≤ n ≤ 30

Exemplu

Intrare

5

Ieșire

1 5 2 4 3
5 2 4 3 4
2 4 3 4 2
4 3 4 2 5
3 4 2 5 1

Explicație

S-a citit 5 și se afisează o matrice de 5 linii și 5 coloane, unde 1 se află in colțul din stânga sus, apoi în pozițiile învecinate se află 5, apoi 2 și tot așa până se va completa matricea.

Încărcare soluție

Lipește codul aici

n = int(input())

v = [0] * 61

lc = 0

st = 1

dr = n

for i in range(1, 2*n+1):

    if i % 2 == 1:

        if v[i-1] != st:

            lc += 1

            v[lc] = st

            st += 1

        else:

            st += 1

    else:

        if v[i-1] != dr:

            lc += 1

            v[lc] = dr

            dr -= 1

        else:

            dr -= 1

for i in range(1, n+1):

    for j in range(1, n+1):

        print(v[i+j-1], end=" ")

    print()