Напишите программу или функцию, которая принимает положительное целое число N и печатает или возвращает N × N художественную строку ASCII, верхняя половина которой представляет собой полукруг, состоящий из (
's, а нижняя половина представляет собой направленный вниз треугольник, состоящий из V
' s, с пробелы, используемые в качестве отступов.
Другими словами, сделайте конус мороженого 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))
Детали
- Получать ввод из стандартного ввода, командной строки или в качестве аргумента функции. Выведите на стандартный вывод или аналогичный, или вы можете вернуть строку, если напишите функцию.
- Часть конуса должна точно соответствовать эталонной реализации для всех N.
- Порция мороженого не обязательно должна точно соответствовать эталонной реализации, если она явно имеет форму полукруга для всех N. (Это позволяет не беспокоиться о небольших различиях в полукруге из-за ошибок округления .)
- Не должно быть лишних пробелов, но могут быть лишние пробелы.
- Выходные данные могут дополнительно содержать завершающий перевод строки.
- Вы можете дополнительно использовать любые 3 других различных печатаемые ASCII символы вместо
(
,V
и пространства.
счет
Самая короткая подача в байтах побеждает. Tiebreaker отправляется в самую старую подачу.