El pequeño Chandler está triste. Dibujale una nube para animarlo.
Nota: Dibujar una nube en realidad no lo animará.
Un círculo se puede definir como una tupla de 3 (x,y,r)
donde x
está la posición x del círculo en un plano cartesiano, y
es la posición y del círculo en un plano cartesiano y r
es el radio del círculo. x
y y
puede ser negativo r
Siempre es positivo. La entrada es una lista de círculos en forma de 3-tuplas separadas por espacios. Por ejemplo:
3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8
El 3,1,1
significa "Un círculo con punto central en 3,1
con 1 radio. 3,2,1.5
Significa" Un círculo con punto central en 3,2
con 1,5 radios.
Si dibujamos todos estos círculos de la entrada en un gráfico, se ve así (he incluido líneas de cuadrícula y etiquetas solo para mayor claridad; no son necesarias):
Observe cómo todos los círculos son cohesivos . Es decir, todos se superponen de manera tal que forma un grupo grande sin ningún grupo pequeño de círculos separados del resto. La entrada está garantizada para ser cohesiva.
Supongamos ahora que dibujamos una línea que viaja alrededor del "borde" formado por estos círculos, sin ninguna de las otras líneas. Sería como dibujar el borde de la silueta formada por todos los círculos. La nube resultante se vería así:
Entonces, esta nube se formó dibujando solo los arcos de los círculos en la entrada que forman un borde, dando como resultado una sola forma. En otras palabras, la nube se forma dibujando solo los arcos que no están dentro de otro círculo. Su programa tomará datos en el formulario explicado anteriormente y generará una imagen que muestra la nube resultante. La forma general de la nube debe ser correcta, pero la escala, el color, el grosor de la línea y el aspecto de los vértices depende de usted. Tenga en cuenta que la nube debe ser visible, por lo que no puede extraer algo como "Este programa dibuja una nube blanca sobre un fondo blanco", "Este programa dibuja una nube a una escala infinitamente pequeña", "Este programa dibuja una nube con 0 grosor de línea ", etc. Tenga también en cuenta que el color del borde debe ser diferente del color del relleno o del fondo.
Otro ejemplo. Entrada:
1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7
Salida:
Si hay un "agujero" en la nube, también debe dibujar el agujero. Entrada:
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
Salida:
Aquí hay una regla importante: su programa debe dibujar solo las líneas que forman el borde. Esto significa que NO PUEDE dibujar los círculos completamente, y luego dibujar los círculos un poco más pequeños con un relleno blanco, porque ese método todavía dibuja líneas que no forman un borde, simplemente las cubre después. El propósito de la regla era evitar las implementaciones de "dibujar los círculos, luego dibujar los círculos nuevamente con un relleno blanco", o algo similar a eso. Se espera que la respuesta realmente calcule dónde dibujar cosas antes de dibujarla.
Este es el código de golf, por lo que gana el recuento de caracteres más corto.