Escriba un programa o función que tome un entero positivo N e imprima o devuelva una cadena de arte ASCII N × N cuya mitad superior es un semicírculo hecho de ('sy cuya mitad inferior es un triángulo apuntando hacia abajo hecho de V' s, con espacios utilizados como relleno.
En otras palabras, haga un cono de helado ASCII: (salida para N = 17)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Ejemplos
Aquí están las salidas para N = 1 a 5. Tenga en cuenta que para N impar, el triángulo siempre debe ser la mitad más grande.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
Aquí hay una N = 101 pastebin.
Y aquí hay una implementación de referencia de Python 3 sin golf:
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))
Detalles
- Tome la entrada de stdin, línea de comando o como argumento de función. Salida a stdout o similar, o puede devolver la cadena si escribe una función.
- La porción del cono debe coincidir exactamente con la implementación de referencia para todos los N.
- La porción de helado no necesita coincidir exactamente con la implementación de referencia, siempre y cuando tenga claramente la forma de un semicírculo para todo N. (Esto es para que no tenga que preocuparse por pequeñas diferencias en el semicírculo debido a errores de redondeo .)
- No debe haber espacios iniciales innecesarios, pero puede haber espacios finales superfluos.
- La salida puede contener opcionalmente una nueva línea final.
- Opcionalmente, puedes usar cualquier otro 3 distintas ASCII imprimibles caracteres en lugar de
(,Vy espacio.
Puntuación
La presentación más corta en bytes gana. Tiebreaker va a la presentación más antigua.