3
删除通畅的矩形
该图像是通过将7个不同颜色的矩形彼此叠加而制成的: 黑色和栗色矩形不受阻碍,也就是说,上方没有其他矩形。 编写一个程序,以获取诸如此类的图像并删除任何单个无障碍的矩形,然后输出结果图像。 例 如果您在上面的图像上运行程序,并在输出上重新运行它,则程序可能会像这样进行。 运行1-黑色被移除(可能是栗色的): 运行2-栗色已移除(唯一选择): 运行3-删除黄色(唯一选择): 运行4-已删除蓝色(本来可以是绿色): 运行5-移除绿色(唯一选择): 运行6-移除棕色(唯一选择): 运行7-移除红色(唯一选择): 任何其他运行都应产生相同的白色图像。 希望Stack Exchange不会无损地压缩任何这些图像。 图像将始终具有白色背景,并且每个矩形都是唯一的RGB颜色,而不是白色。 您可以假定图像始终可以解释为一组重叠的矩形。具体来说,您可以假定,对于特定颜色,该颜色最接近图像顶部的像素是该颜色矩形的上边缘的一部分。底部,左侧和右侧边缘也是如此。 因此,例如,在此图像中,红色矩形的顶部边缘将恰好在黄色矩形的底部边缘下方,因为橙色矩形覆盖了旧的红色顶部边缘: 在此图像中,可以先删除红色矩形(以及黑色/栗色/橙色/灰色): 当下部矩形的顺序不明确时,可以给它们任何顺序。 例如,此处的左侧图像可能变为中间或右侧: 输出不应有矛盾的重叠(因此应该可以使用画家的算法来实现)。因此,在此图像中(感谢user23013),它必须在橙色矩形下为绿色: 额外细节 图像和矩形可以具有任何尺寸。 矩形可能会触及图像边框。 最多可能有256 3-1 个矩形。 如果输入是全白的,则输出也应该是白色。 您可以使用图像库。 输入应该是图像文件名或原始图像数据。它可以来自stdin或命令行。 可以将输出写入相同或另一个图像文件,将原始图像输出到stdout,或简单地显示。 允许使用任何常见的无损Truecolor图像文件格式。 字节最少的提交将获胜。