En utilisant Algodoo et Paint, j'ai créé ces six images monochromes 300 × 300 de quatre formes pratiques:
Cette classe d'images a les propriétés suivantes:
- Ils ont toujours une résolution de 300 × 300 pixels, monochromes (noir et blanc uniquement) et ont exactement quatre régions blanches correspondant à un carré, un cercle, un triangle et un engrenage.
- Les formes ne se chevauchent ni ne se touchent jamais, pas plus qu'elles ne touchent le bord de l'image ou ne sortent du cadre.
- Les formes ont toujours la même taille, mais elles peuvent être pivotées et positionnées de n’importe quelle manière.
(Les formes ont également des surfaces égales, bien que, si elles sont tramées de la sorte, leur nombre de pixels ne sera probablement pas exactement équivalent.)
Défi
Ecrivez le programme ou la fonction la plus courte possible qui prend le nom de fichier d'une telle image et transforme tous les pixels blancs ...
- rouge
(255, 0, 0)
si elles sont dans le carré. - bleu
(0, 0, 255)
s'ils sont dans le cercle. - vert
(0, 255, 0)
si elles sont dans le triangle. - jaune
(255, 255, 0)
s'ils sont dans l'engrenage.
par exemple
Détails
Votre programme devrait fonctionner efficacement pour toutes les images d'entrée possibles. (Seules les images monochromatiques 300 × 300 valides seront entrées.) Les six images que j'ai fournies ne sont que des exemples. Vous ne pouvez pas coder en dur leur sortie dans votre programme.
Vous ne pouvez pas utiliser de bibliothèques ou de fonctions de vision par ordinateur, intégrées ou externes. Le but est de faire cela en utilisant vos propres opérations au niveau des pixels. Vous pouvez utiliser des bibliothèques d’images qui vous permettent simplement d’ouvrir et de modifier des images (par exemple, PIL pour Python).
Vous pouvez utiliser n'importe quel format de fichier d'image commun sans perte pour les entrées et les sorties, tant que vous vous en tenez au schéma de couleurs.
Vous pouvez prendre l'image nomfichier en tant qu'argument de fonction, depuis stdin ou depuis la ligne de commande. L'image de sortie peut être enregistrée dans un nouveau fichier, le même fichier, ou simplement affichée.
Notation
La soumission avec le moins d'octets gagne. Je peux tester des soumissions avec des images supplémentaires pour déterminer leur validité.