Scrivi un programma o una funzione che accetta un numero intero positivo N e stampa o restituisce una stringa di arte ASCII N × N la cui metà superiore è un semicerchio fatto di ('s e la cui metà inferiore è un triangolo rivolto verso il basso fatto di V' s, con spazi usati come imbottitura.
In altre parole, crea un cono gelato ASCII: (output per N = 17)
(((((
(((((((((
(((((((((((((
(((((((((((((
(((((((((((((((
(((((((((((((((
(((((((((((((((((
(((((((((((((((((
VVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVV
VVVVVVVVVVVVV
VVVVVVVVVVV
VVVVVVVVV
VVVVVVV
VVVVV
VVV
V
Esempi
Ecco le uscite per N = da 1 a 5. Nota che per N dispari, il triangolo deve sempre essere la metà più grande.
V
((
VV
(((
VVV
V
((
((((
VVVV
VV
(((
(((((
VVVVV
VVV
V
Ed ecco un'implementazione di riferimento di Python 3 non modificata:
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))
Dettagli
- Accetta input da stdin, riga di comando o come argomento di funzione. Output su stdout o simile, oppure è possibile restituire la stringa se si scrive una funzione.
- La parte del cono deve corrispondere esattamente all'implementazione di riferimento per tutti N.
- La porzione di gelato non deve necessariamente corrispondere esattamente all'implementazione di riferimento, purché sia chiaramente a forma di semicerchio per tutti i N. (Questo è quindi non devi preoccuparti di lievi differenze nel semicerchio a causa di errori di arrotondamento .)
- Non ci dovrebbero essere spazi iniziali non necessari ma potrebbero esserci spazi finali superflui.
- L'output può contenere facoltativamente una nuova riga finale.
- Si può opzionalmente usare altri 3 distinti ASCII stampabili caratteri al posto di
(,Ve lo spazio.
punteggio
Vince l' invio più breve in byte . Tiebreaker va alla presentazione più vecchia.