заполнить матрицу по диагоналям Python

У меня есть матрица, которая подстраивает свой размер под длину фразы (n x n, n>=5). Теперь эту фразу нужно внести в матрицу по диагоналям параллельной главной, пустые элементы занимаются знаком - Например вводим мы в матрицу 5x5 "привет, мир", в матрице должно получиться так:

р в р п
- - , е и
- - - м т
- - - - и
- - - - -
[р, ,в,р,п]
[-,-,',е,и]
[-,-,-,м,т]
[-,-,-,-,и]
[-,-,-,-,-]

Как мне это сделать. Вот мой код, тут ищется n

text = input()
len = len(text)  #Вводим текст

j = 0
for i in range(len):  #высчитываем размер таблицы
    j=i*i
    print(j)
    if len <= j:
        n = i
        if n < 5:
            n=5
        print(n)
        break

Ответы (1 шт):

Автор решения: GrAnd

У меня получился такой вариант.

import math

txt = "привет, мир"

# вычисляем минимальный размер матрицы n на n которая вместит текст
n = math.ceil(math.sqrt(len(txt)))
# минимальная - 5 на 5
n = 5 if n < 5 else n

# инициализируем матрицу
matrix = [['-']*n for _ in range(n)]

# преобразуем текст в стек чтобы удобнее было доставать посимвольно
txt_seq = list(txt[::-1])

# заполняем матрицу
try:
    for s in range(n-1, -n, -1):
        for i in range(0, n-s):
            if 0 <= s+i < n and 0 <= i < n:
                matrix[i][s+i] = txt_seq.pop()
except IndexError: # сюда проваливаемся если досрочно кончился текст
    pass

print('\n'.join(map(str, matrix)))

Напечатает:

['р', ',', 'в', 'р', 'п']
['-', '-', ' ', 'е', 'и']
['-', '-', '-', 'м', 'т']
['-', '-', '-', '-', 'и']
['-', '-', '-', '-', '-']
→ Ссылка