Il piccolo Chandler è triste. Disegnagli una nuvola per rallegrarlo.
Nota: disegnare una nuvola in realtà non lo rallegra.
Un cerchio può essere definito come una 3 tupla in (x,y,r)
cui si x
trova la posizione x del cerchio su un piano cartesiano, y
è la posizione y del cerchio su un piano cartesiano ed r
è il raggio del cerchio. x
e y
può essere negativo. r
è sempre positivo. L'input è un elenco di cerchi sotto forma di 3 tuple separate da spazi. Per esempio:
3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8
I 3,1,1
mezzi "Un cerchio con centro a 3,1
con 1 raggio. 3,2,1.5
Significa" cerchio con centro a 3,2
con 1,5 raggio.
Se disegniamo tutti questi cerchi dell'input su un grafico, sembra così (ho incluso le linee della griglia e le etichette solo per chiarezza; non sono richiesti):
Nota come tutti i cerchi sono coerenti . Cioè, sono tutti sovrapposti insieme in modo da formare un grande gruppo senza piccoli gruppi di cerchi separati dal resto. L'ingresso è garantito per essere coerente.
Supponiamo ora di tracciare una linea che percorre il "bordo" formato da questi cerchi, senza nessuna delle altre linee. Sarebbe come disegnare il bordo della sagoma formata da tutti i cerchi. Il cloud risultante sarebbe simile al seguente:
Quindi questa nuvola è stata formata disegnando solo gli archi dei cerchi nell'input che formano un bordo, risultando in una singola forma. In altre parole, la nuvola si forma disegnando solo gli archi che non si trovano all'interno di un altro cerchio. Il programma prenderà l'input nel modulo spiegato sopra e produrrà un'immagine che mostra il cloud risultante. La forma complessiva della nuvola deve essere corretta, ma la scala, il colore, lo spessore della linea e l'aspetto dei vertici dipendono da te. Nota che il cloud deve essere visibile, quindi non puoi estrarre qualcosa del tipo "Questo programma disegna una nuvola bianca su uno sfondo bianco", "Questo programma disegna una nuvola su scala infinitamente piccola", "Questo programma disegna una nuvola con 0 spessore della linea ", ecc. Si noti inoltre che il colore del bordo deve essere diverso dal colore del riempimento o dello sfondo.
Un altro esempio. Ingresso:
1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7
Produzione:
Se c'è un "buco" nella nuvola, dovresti disegnare anche il buco. Ingresso:
0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4
Produzione:
Ecco una regola importante: il tuo programma deve tracciare solo le linee che formano il bordo. Ciò significa che NON PUOI semplicemente disegnare completamente i cerchi, e quindi disegnare i cerchi leggermente più piccoli con un riempimento bianco - poiché quel metodo disegna ancora linee che non formano un bordo, li copre solo in seguito. Lo scopo della regola era impedire le implementazioni "disegna i cerchi, quindi disegna nuovamente i cerchi con un riempimento bianco" o qualcosa di simile. La risposta dovrebbe effettivamente calcolare dove disegnare le cose prima di disegnarla.
Questo è il golf del codice, quindi vince il numero di caratteri più breve.