Напишіть програму або функцію, яка приймає натуральне ціле число N, і друкує або повертає N × N ASCII рядку мистецтва, верхня половина якого є півколом з (
's, а нижня половина - трикутник, спрямований вниз, зроблений з V
, простір, що використовується як підкладка.
Іншими словами, складіть конус морозива ASCII: (вихід для N = 17)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Приклади
Ось результати для N = 1 до 5. Зауважте, що для непарного N трикутник завжди повинен бути більшою половиною.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
А ось реалізація посилань на непільгований Python 3:
N = int(input())
ic = [[' '] * N for _ in range(N)]
for y in range(N//2):
for x in range(N):
if (x - (N - 1) / 2)**2 + (y - (N - 1) / 2)**2 < (N / 2)**2:
ic[y][x] = '('
for y in range(N//2, N):
for x in range(y - N//2, N - (y - N//2)):
ic[y][x] = 'V'
for line in ic:
print(''.join(line))
Деталі
- Візьміть дані з stdin, командного рядка або як аргумент функції. Вихід у stdout або подібне, або ви можете повернути рядок, якщо ви пишете функцію.
- Частина конуса повинна точно відповідати еталонній реалізації для всіх N.
- Частину морозива не потрібно точно відповідати еталонній реалізації, доки вона чітко має форму півкола для всіх N. .)
- Не повинно бути зайвих провідних просторів, але можуть бути зайві проміжки.
- Вихід може необов'язково містити зворотний новий рядок.
- Ви можете додатково використовувати будь-які 3 інших різних друкуються ASCII символи замість
(
,V
і простору.
Оцінка балів
Виграє найкоротше подання в байтах . Злодій переходить до найдавнішого уявлення.