Мини-урок · перед практикой
Диагонали, параллельные главной
Значение клетки равно расстоянию между её индексами.
Как к ней подойти
Разберитесь, как работать со строками и столбцами двумерного массива, не путая индексы.
Коротко о теме
Двумерный массив читают по двум координатам: сначала строка, затем столбец. Вложенные циклы обходят все ячейки или только нужную часть таблицы. Сверьте размеры массива и границы обоих индексов.
Ключевая идея · Модуль разности
На главной диагонали индексы равны, на соседних отличаются на один.
Проверьте перед запуском
- Не создавайте матрицу через [[0] * n] * n: строки будут общими.
После практики
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Модуль разности
На главной диагонали индексы равны, на соседних отличаются на один.
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²).