编写一个程序或函数,以您选择的合理格式接收以下输入:
两个正整数W和H定义要生成的图像的宽度和高度。
两种RGB颜色C1和C2将用于为图像着色。
形式的三元组列表,
(r, x, y)
用于定义在图像平面中具有半径r
和中心的圆x, y
。r
是一个正整数,x
并且y
是任何整数。图像的左上像素为0, 0
,x轴向右增加,y轴向下增加。
输出尺寸为W x H的图像,并用C1和C2着色,以使所有重叠圆所定义的两个相邻区域都不是同一颜色。
例如:如果输入是
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)
那么圆边界看起来像这样:
圆圈创建的图像中有六个不同的连续区域。每个区域必须用C1(黄色)或C2(紫色)上色,以使没有两个相邻的区域具有相同的颜色。
有两种方法可以做到这一点,它们唯一的区别是可以交换颜色:
因此,对于示例输入,这两个图像中的任何一个都是有效输出。
喜欢的东西这是因为两个黄地区彼此相邻无效的输出。
您的输出图像应遵循以下准则:
除了C1和C2,第三种中性色(例如黑色或白色)也可以用于圆形边界,只要它们的厚度不超过5像素即可。(上面的示例中存在黑色的1像素厚边界。)
但是,圆边界不是必需的。这些区域可以彼此直接相邻:
这两个都是以上示例的另一个有效输出。
使用圆图绘制算法或图形库提供的任何内容,圆应尽可能合理地准确。
通常,不需要像素完美,但是如果输入参数越来越大地按比例缩放,则生成的图像将变得越来越准确。
允许抗锯齿,但不是必需的。
不允许在后台使用网格线或轴标签等。
以字节为单位的最短代码获胜。
更多例子
所有这些输入都使用不同的圈子集:
W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
在任何示例中,颜色都可以交换并保持有效。
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.
确保您的输出行为与所有这些示例相似。
tikz