Synchroniczna macierz

0

Cześć
Mam problem mam zrobić program który po wpisaniu liczby n zrobi mi macierz nxn w której po przekatnej wyświetlą sie liczby n a ponizej i powyżej liczby o 1 mniejsza i tak wszystko bedzie dążyło do 1 . Calkowcie nie wiem jak sie za to zabrać mam do tego użyć pętli for Choć i tak pewnie tego nie ogarnę wiec prosze was o pomoc

1

Załóżmy, że na wejście przychodzi macierz a, kwadratowa, o wymiarze n, pseudokod, trochę podobny do pythona:

def synch_matrix(a, n):

    for x in range(n): # range: x iteruje od zera - bo bez dolnego progu, do n - 1, standartowo, 0 base indexing
        a[x][x] = n # najpierw ustaw n na przekątnej głównej

    # górna częśc macierzy:
    for k in range(0, n): # k idzie po wierszach
        s = 0 # pomocniczy indeks na 0
        for m in range(k + 1, n): # m idzie przez wiersze (po kolumnach), od pierwszego elementu na prawo za przekatną główną
            a[k][m] = n - (s + 1) # tu ustawianie wartości elementu, indeksem s: n - 1, n - 2, .., 1
            s += 1 # inkrement pomocniczy, obvious


    # dolna częśc macierzy, tak samo tylko jedziemy od dołu
    for k in range(n - 1, -1, -1): # iteruj k od n - 1, do 0 (do większych od -1), z krokiem -1,  bo się cofamy, taka składnia pseudokodu
        # i dalej analogicznie...
        s = 0
        for m in range(k - 1, -1, -1):
            a[k][m] = n - (s + 1)
            s += 1

    return a # na końcu zwróć zmienioną tablicę

print("------------ wynik:")
print(synch_matrix(a, 5))
 # -->
------------ wynik:
[[5 4 3 2 1]
 [4 5 4 3 2]
 [3 4 5 4 3]
 [2 3 4 5 4]
 [1 2 3 4 5]]

1 użytkowników online, w tym zalogowanych: 0, gości: 1