Cette image a été créée en superposant 7 rectangles de couleurs différentes les uns sur les autres:
Les rectangles noirs et marron ne sont pas obstrués , c'est-à-dire qu'aucun autre rectangle n'est au-dessus d'eux.
Écrivez un programme qui prend une image comme celle-ci et supprimez tout rectangle non obstrué, en sortie l'image résultante.
Exemple
Si vous avez exécuté votre programme sur l'image ci-dessus et l'avez continué à relancer sur la sortie, il pourrait progresser comme ceci.
Piste 1 - Noir retiré (aurait pu être marron):
Run 2 - Maroon supprimé (seul choix):
Run 3 - Jaune retiré (seul choix):
Run 4 - Blue supprimé (aurait pu être vert):
Course 5 - Vert retiré (seul choix):
Run 6 - Brown enlevé (seul choix):
Run 7 - Red supprimé (seul choix):
Tout essai supplémentaire devrait produire la même image blanche.
J'espère que Stack Exchange n'a compressé aucune de ces images avec perte.
L'image aura toujours un fond blanc et chaque rectangle aura une couleur RVB unique qui n'est pas blanche.
Vous pouvez supposer que l'image peut toujours être interprétée comme un ensemble de rectangles se chevauchant. Plus précisément, vous pouvez supposer que, pour une couleur particulière, le pixel dont la couleur est la plus proche du haut de l'image fait partie du bord supérieur du rectangle de cette couleur. Il en va de même pour les bords inférieur, gauche et droit.
Ainsi, par exemple, dans cette image, le bord supérieur du rectangle rouge serait juste en dessous du bord inférieur du rectangle jaune, car le rectangle orange recouvrait l'ancien bord supérieur rouge:
Dans cette image, le rectangle rouge pourrait être supprimé en premier (avec le noir / marron / orange / gris):
Lorsque l'ordre des rectangles inférieurs est ambigu, vous pouvez leur donner n'importe quel ordre.
Par exemple, l'image de gauche ici pourrait devenir le milieu ou la droite:
La sortie ne doit pas avoir de chevauchements paradoxaux (donc la rendre possible avec l' algorithme du peintre devrait être possible). Donc dans cette image ( merci user23013 ), il faudrait que ce soit vert sous le rectangle orange:
Détails supplémentaires
- L'image et les rectangles peuvent avoir n'importe quelle dimension.
- Les rectangles peuvent toucher la bordure de l'image.
- Il peut y avoir jusqu'à 256 rectangles 3 - 1.
- Si l'entrée est entièrement blanche, la sortie devrait l'être également.
- Vous pouvez utiliser des bibliothèques d'images.
- L'entrée doit être le nom du fichier image ou les données d'image brutes. Il peut provenir de stdin ou de la ligne de commande.
- La sortie peut être écrite dans le même fichier ou dans un autre fichier image, rejetée crue dans stdout ou simplement affichée.
- Tout format de fichier d'image truecolor sans perte commun est autorisé.
La soumission avec le moins d'octets est gagnante.