Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą N i wypisuje lub zwraca ciąg artystyczny N × N ASCII, którego górna połowa jest półkolem z ('s, a dolna połowa jest trójkątem skierowanym w dół z V' spacje używane jako wypełnienie.
Innymi słowy, zrób rożek do lodów ASCII: (wyjście dla N = 17)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Przykłady
Oto wyniki dla N = 1 do 5. Zauważ, że dla nieparzystego N trójkąt zawsze musi być większą połówką.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
A oto implementacja referencji bez języka 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))
Detale
- Weź dane wejściowe z stdin, wiersza poleceń lub jako argument funkcji. Wyjście na standardowe wyjście lub podobne, lub możesz zwrócić ciąg, jeśli napiszesz funkcję.
- Część stożkowa powinna dokładnie pasować do implementacji referencyjnej dla wszystkich N.
- Część lodów nie musi dokładnie pasować do implementacji referencyjnej, o ile ma wyraźnie półkole dla wszystkich liter N. (Dzięki temu nie musisz się martwić drobnymi różnicami w półkolu z powodu błędów zaokrąglania .)
- Nie powinno być żadnych zbędnych spacji wiodących, ale mogą być zbędne spacje końcowe.
- Dane wyjściowe mogą opcjonalnie zawierać końcowy znak nowej linii.
- Opcjonalnie można używać 3 inne odrębne druku ASCII znaków w miejscu
(,Vi przestrzeń.
Punktacja
Najkrótsze przesłanie w bajtach wygrywa. Tiebreaker przechodzi do najstarszego zgłoszenia.