Диагонали, параллельные главной
Вы решили задачу. Теперь можно сравнить подходы.
Значение клетки равно расстоянию между её индексами.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Модуль разности
На главной диагонали индексы равны, на соседних отличаются на один.
n = int(input())
a = [[abs(i - j) for j in range(n)] for i in range(n)]
for row in a:
print(*row)
Время: O(n²). Память: O(n²).
Другой способ: Заполнение симметричных диагоналей
Для каждого расстояния заполняем две симметричные диагонали одним значением.
n = int(input())
a = [[0] * n for _ in range(n)]
for distance in range(1, n):
for i in range(n - distance):
a[i][i + distance] = distance
a[i + distance][i] = distance
for row in a:
print(*row)
Время: O(n²). Память: O(n²).
На что обратить внимание
- Не создавайте матрицу через [[0] * n] * n: строки будут общими.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.