3417 - Gen Mat 28
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 fi1. - În pozițiile adiacente, de coordonate
1 2și2 1, va fin. - În pozițiile adiacente, de coordonate
1 3,2 2și3 1, va fi2. - În pozițiile adiacente, de coordonate
1 4,2 3,3 2și4 1, va fin-1. - Și așa mai departe…
- În penultimele poziții, de coordonate
n-1 nșin n-1, va fin. - În ultima poziție, de coordonate
n n, va fi1.
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
<syntaxhighlight lang="python" line="1"> 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()
</syntaxhighlight>