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