Escreva um programa ou função que receba um número inteiro positivo N e imprima ou retorne uma sequência de arte N × N ASCII cuja metade superior seja um semicírculo feito de (
's e cuja metade inferior seja um triângulo apontando para baixo feito de V
' s, com espaços usados como preenchimento.
Em outras palavras, faça um sorvete ASCII: (saída para N = 17)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Exemplos
Aqui estão as saídas para N = 1 a 5. Observe que para N ímpar, o triângulo sempre deve ser a metade maior.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
Aqui está uma pastabin N = 101.
E aqui está uma implementação de referência Python 3 não-destruída:
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))
Detalhes
- Pegue a entrada de stdin, linha de comando ou como argumento de função. Saída para stdout ou similar, ou você pode retornar a string se escrever uma função.
- A parte do cone deve corresponder exatamente à implementação de referência para todos os N.
- A parte do sorvete não precisa corresponder exatamente à implementação de referência, desde que esteja claramente na forma de um semicírculo para todos os N. (Isso é para que você não precise se preocupar com pequenas diferenças no semicírculo devido a erros de arredondamento .)
- Não deve haver espaços à esquerda desnecessários, mas pode haver espaços à direita supérfluos.
- A saída pode opcionalmente conter uma nova linha à direita.
- Opcionalmente, pode utilizar quaisquer outros 3 distintas ASCII imprimível caracteres em lugar de
(
,V
e espaço.
Pontuação
O menor envio em bytes vence. O desempatador vai para a finalização mais antiga.