За заданим натуральним числом n вивести зображення розміром n×n, утворене символами равлик та рівно як показано у прикладі.
Входові дані
Одне натуральне число n (n > 1).
Виходові дані
Вивести зображення n×n.
Лимит времени 1 секунда
Лимит использования памяти 256 MiB
Входные данные #1
5
Выходные данные #1
@@@@@
@@@@=
@@@==
@@===
@====
Ответы
Ответ:
=
Для створення зображення равлика нам потрібно заповнити матрицю n × n символами '=' та '@', де '@' буде означати частину равлика, яка знаходиться в лівому верхньому куті, а '=' - частину, яка знаходиться в правому нижньому куті.
Починаємо з ініціалізації матриці n × n символом '=':
scss
Copy code
matrix = [['=' for j in range(n)] for i in range(n)]
Потім змінюємо символи у матриці, починаючи з верхнього лівого кута та рухаючись вправо, донизу, вліво, догори, змінюючи напрям кожні n/2 кроків, доки не дійдемо до центру матриці.
python
Copy code
current_char = '@'
for i in range(n//2):
for j in range(i, n-i):
matrix[i][j] = current_char # верхня сторона
matrix[j][n-i-1] = current_char # права сторона
matrix[n-i-1][n-j-1] = current_char # нижня сторона
matrix[n-j-1][i] = current_char # ліва сторона
current_char = '=' if current_char == '@' else '@' # зміна символу
Останнім кроком є виведення матриці у консоль:
scss
Copy code
for i in range(n):
for j in range(n):
print(matrix[i][j], end='')
print()
Повний код для вирішення цієї задачі:
python
Copy code
n = int(input())
# ініціалізація матриці
matrix = [['=' for j in range(n)] for i in range(n)]
# заповнення матриці
current_char = '@'
for i in range(n//2):
for j in range(i, n-i):
matrix[i][j] = current_char # верхня сторона
matrix[j][n-i-1] = current_char # права сторона
matrix[n-i-1][n-j-1] = current_char # нижня сторона
matrix[n-j-1][i] = current_char # ліва сторона
current_char = '=' if current_char == '@' else '@' # зміна символу
# виведення матриці
for i in range(n):
for j in range(n):
print(matrix[i][j], end='')
print()
Зауважте, що в програмі ми використовуємо операцію "//", яка виконує цілочисельне ділення. Це необхідно, оскі