Der kleine Chandler ist traurig. Zeichne ihm eine Wolke, um ihn aufzuheitern.
Hinweis: Das Zeichnen einer Wolke wird ihn nicht wirklich aufheitern.
Ein Kreis kann als 3-Tupel definiert werden, (x,y,r)
wobei x
die x-Position des Kreises auf einer kartesischen Ebene, y
die y-Position des Kreises auf einer kartesischen Ebene und r
der Radius des Kreises ist. x
und y
kann negativ sein. r
ist immer positiv. Die Eingabe ist eine Liste von Kreisen in Form von durch Leerzeichen getrennten 3-Tupeln. Zum Beispiel:
3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8
Das 3,1,1
bedeutet "Ein Kreis mit Mittelpunkt bei 3,1
mit 1 Radius. 3,2,1.5
" Ein Kreis mit Mittelpunkt bei 3,2
mit 1,5 Radius.
Wenn wir alle diese Kreise der Eingabe in einem Diagramm zeichnen, sieht es so aus (ich habe nur zur Verdeutlichung Gitterlinien und Beschriftungen eingefügt; diese sind nicht erforderlich):
Beachten Sie, wie alle Kreise zusammenhängend sind . Das heißt, sie sind alle so überlappt, dass sie eine große Gruppe bilden, ohne dass kleine Gruppen von Kreisen vom Rest getrennt sind. Die Eingabe ist garantiert kohäsiv.
Nehmen wir nun an, wir zeichnen eine Linie, die um die von diesen Kreisen gebildete "Grenze" verläuft, ohne eine der anderen Linien. Es wäre, als würde man den Rand der Silhouette zeichnen, die von allen Kreisen gebildet wird. Die resultierende Wolke würde ungefähr so aussehen:
Diese Wolke wurde also gebildet, indem nur die Bögen der Kreise in der Eingabe gezeichnet wurden, die eine Grenze bilden, was zu einer einzigen Form führte. Mit anderen Worten, die Wolke wird gebildet, indem nur die Bögen gezeichnet werden, die sich nicht innerhalb eines anderen Kreises befinden. Ihr Programm nimmt Eingaben in der oben erläuterten Form auf und gibt ein Bild aus, das die resultierende Wolke anzeigt. Die Gesamtform der Wolke muss korrekt sein, aber der Maßstab, die Farbe, die Linienstärke und das Aussehen der Scheitelpunkte liegen bei Ihnen. Beachten Sie, dass die Wolke sichtbar sein muss, damit Sie nichts wie "Dieses Programm zeichnet eine weiße Wolke auf einem weißen Hintergrund", "Dieses Programm zeichnet eine Wolke in einem infinitesimal kleinen Maßstab", "Dieses Programm zeichnet eine Wolke mit 0" ziehen können Strichstärke "usw. Beachten Sie außerdem, dass sich die Farbe des Rahmens von der Farbe der Füllung oder des Hintergrunds unterscheiden muss.
Ein anderes Beispiel. Eingang:
1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7
Ausgabe:
Wenn es ein "Loch" in der Wolke gibt, sollten Sie das Loch auch zeichnen. Eingang:
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
Ausgabe:
Hier ist eine wichtige Regel: Ihr Programm darf nur die Linien zeichnen , die den Rand bilden. Das bedeutet, dass Sie die Kreise NICHT einfach vollständig und dann mit einer weißen Füllung etwas kleiner zeichnen können - da bei dieser Methode immer noch Linien gezeichnet werden, die keinen Rand bilden, werden sie anschließend nur überdeckt. Der Zweck der Regel bestand darin, zu verhindern, dass Implementierungen wie "Kreise zeichnen, dann Kreise mit weißer Füllung erneut zeichnen" oder ähnliches implementiert werden. Es wird erwartet, dass die Antwort tatsächlich berechnet, wo die Dinge gezeichnet werden sollen, bevor sie gezeichnet werden.
Dies ist Codegolf, also gewinnt die kürzeste Anzahl an Zeichen.