Escriba un programa o función que tome la siguiente entrada en un formato razonable de su elección:
Dos enteros positivos W y H que definen el ancho y la altura de la imagen que generará.
Dos colores RGB C1 y C2 que se usarán para colorear la imagen.
Una lista de 3 tuplas de la forma
(r, x, y)
que definen círculos con radior
y centrox, y
en el plano de la imagen.r
es un número entero positivox
yy
es cualquier número entero . El píxel superior izquierdo de la imagen es0, 0
y el eje x aumenta a la derecha y el eje y aumenta hacia abajo.
Imprima una imagen con dimensiones W por H que esté coloreada con C1 y C2 de modo que no haya dos regiones vecinas definidas por todos los círculos superpuestos que sean del mismo color.
Por ejemplo: si la entrada es
W = 300 H = 200 C1 = (255, 200, 0) C2 = (128, 0, 255) Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)
entonces los límites del círculo se ven así:
Hay seis regiones distintas y contiguas en la imagen creada por los círculos. Cada región debe estar coloreada con C1 (amarillo) o C2 (púrpura) de modo que no haya dos regiones vecinas del mismo color.
Hay dos formas de hacer esto, la única diferencia es que los colores se intercambian:
Por lo tanto, cualquiera de estas dos imágenes sería una salida válida para la entrada de ejemplo.
Algo como esto sería una salida no válida ya que dos regiones amarillas se unen entre sí.
Sus imágenes de salida deben seguir estas pautas:
Además de C1 y C2, se puede usar un tercer color neutro, como el negro o el blanco, para los límites de los círculos, siempre que no tengan más de 5 píxeles de grosor. (Los límites negros de 1 píxel de grosor están presentes en el ejemplo anterior).
Sin embargo, no se requieren límites de círculos. Las regiones pueden ser vecinas entre sí directamente:
Ambos son otro resultado válido para el ejemplo anterior.
Los círculos deben ser tan precisos como sea razonablemente posible, utilizando algoritmos de dibujo de círculos o lo que proporcione su biblioteca de gráficos.
En general, no se requiere la perfección de píxeles, pero si los parámetros de entrada se escalan cada vez más, la imagen resultante debería ser más y más precisa.
El suavizado está permitido pero no es obligatorio.
Las cuadrículas o etiquetas de eje, etc. en el fondo no están permitidas.
El código más corto en bytes gana.
Más ejemplos
Todos usan estas entradas con diferentes conjuntos de círculos:
W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
En cualquier ejemplo, los colores se pueden intercambiar y seguir siendo válidos.
Circles =
A. empty list
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
A.
B.
C.
D.
E.
F.
G.
H.
I.
J.
K.
L.
Asegúrese de que su salida se comporte de manera similar a todos estos ejemplos.
tikz