Esta imagen se hizo superponiendo 7 rectángulos de diferentes colores uno encima del otro:
Los rectángulos negro y granate no están obstruidos , es decir, no hay otros rectángulos encima.
Escriba un programa que tome una imagen como esta y elimine cualquier rectángulo sin obstrucciones, generando la imagen resultante.
Ejemplo
Si ejecutó su programa en la imagen de arriba y lo siguió ejecutando en la salida, podría progresar así.
Run 1 - Black eliminado (podría haber sido granate):
Run 2 - Maroon eliminado (única opción):
Ejecución 3 - Amarillo eliminado (única opción):
Ejecutar 4 - Azul eliminado (podría haber sido verde):
Ejecutar 5 - Verde eliminado (única opción):
Run 6 - Brown eliminado (única opción):
Ejecución 7 - Rojo eliminado (única opción):
Cualquier ejecución adicional debe producir la misma imagen en blanco.
Esperemos que Stack Exchange no haya comprimido ninguna de estas imágenes.
La imagen siempre tendrá un fondo blanco y cada rectángulo tendrá un color RGB único que no sea blanco.
Puede suponer que la imagen siempre se puede interpretar como un conjunto de rectángulos superpuestos. Específicamente, puede suponer que, para un color en particular, el píxel con ese color más cercano a la parte superior de la imagen es parte del borde superior del rectángulo de ese color. Lo mismo vale para los bordes inferior, izquierdo y derecho.
Entonces, por ejemplo, en esta imagen, el borde superior del rectángulo rojo estaría justo debajo del borde inferior del rectángulo amarillo, ya que el rectángulo naranja cubría el viejo borde superior rojo:
En esta imagen, el rectángulo rojo podría eliminarse primero (junto con negro / granate / naranja / gris):
Cuando el orden de los rectángulos inferiores es ambiguo, puede darles cualquier orden.
Por ejemplo, la imagen izquierda aquí podría convertirse en el medio o la derecha:
La salida no debería tener superposiciones paradójicas (por lo que debería ser posible hacerlo con el algoritmo del pintor ). Entonces, en esta imagen ( gracias user23013 ), tendría que ser verde debajo del rectángulo naranja:
Detalles adicionales
- La imagen y los rectángulos pueden tener cualquier dimensión.
- Los rectángulos pueden tocar el borde de la imagen.
- Puede haber hasta 256 rectángulos 3 - 1.
- Si la entrada es completamente blanca, la salida también debería serlo.
- Puede usar bibliotecas de imágenes.
- La entrada debe ser el nombre del archivo de imagen o los datos de imagen sin procesar. Puede provenir de stdin o la línea de comando.
- El resultado puede escribirse en el mismo archivo de imagen u otro, arrojarse sin formato a stdout, o simplemente mostrarse.
- Se permite cualquier formato de archivo de imagen truecolor sin pérdida común .
El envío con la menor cantidad de bytes gana.